هل هناك طريقة لطلب مجموعة مشتركة من خلال كيفية إدخال المفاتيح مع PHP؟

StackOverflow https://stackoverflow.com/questions/1124679

  •  13-09-2019
  •  | 
  •  

سؤال

إليك مثال على ما أعنيه:

لدي صفيف:

array('type'=>'text', 
      'class'=>'input', 
      'name'=>'username', 
      'id'=>'username', 
      'value'=>'', 
      'size'=>'30', 
      'rows'=>'',
    'cols'=>'');

ثم، أنا حلقة من خلال ذلك مثل ذلك:

$input = '<input ';
    foreach($input_array as $key => $value) {
        if(isset($key) && !empty($key)) {
            $input .= $key . '="' . $value . '" ';
        }   
    }   
$input .= '/>';

آمل أن أعود:

<input type="text" class="input" name="username" id="username" size="30" />

لقد حاولت استخدام وظائف فرز PHP () دون جدوى. أقرب ما يمكنني معرفة هو أنني سأحتاج إلى استخدام شيء مثل usort ()، ولكن أواجه مشكلة في معرفة كيفية كتابة وظيفة ستفعل ما أريد.

أي نصيحة حول هذا الموضوع موضع تقدير كبير، وشكرا كثيرا على القراءة.

هل كانت مفيدة؟

المحلول

يجب أن يكون بالفعل في هذا النظام. يتم فرز صفائف PHP بحيث تكون العناصر بالترتيب الذي أدخلته فيه.

تحتاج أيضا إلى الاتصال empty() على $value ليس $key; $key يجب أن تكون دائما غير فارغة. أنت أيضا لا تحتاج isset() إلى جانب empty(). وبعد بصرف النظر عن هذا الرمز الخاص بك يعمل بشكل جيد وينتج الإخراج المطلوب.

سأكون أيضا حذرا من استخدام empty() لأنه سيعود صحيحا للحصول على سلسلة "0". قد يكون هذا قيمة معلمة صالحة سيتم تجاهلها. هل يمكن أن تحقق بدلا من ذلك strlen($value) > 0.

نصائح أخرى

تشغيل التعليمات البرمجية التالية من خلال Commandline التفاعلية PHP فقط يؤكد توم هازنبيان بيان

يجب أن يكون بالفعل في هذا النظام. يتم فرز صفائف PHP بحيث تكون العناصر بالترتيب الذي أدخلته فيه.

<?php
$a = array(
    'type'=>'text',
    'class'=>'input',
    'name'=>'username',
    'id'=>'username',
    'value'=>'',
    'size'=>'30',
    'rows'=>'',
    'cols'=>''
);
print_r($a);
/* 
Array
(
    [type] => text
    [class] => input
    [name] => username
    [id] => username
    [value] =>
    [size] => 30
    [rows] =>
    [cols] =>
) 
*/
foreach ($a as $k => $v) {
    echo $k . ' => ' . $v . "\n";
}
/* 
type => text
class => input
name => username
id => username
value =>
size => 30
rows =>
cols =>
*/

أنت متأكد من أن هذا هو بالضبط الرمز الذي تستخدمه ولا يوجد شيء يحدث ل $input_array بين الخلق واللوائح؟

تعديل:

سؤال بسيط للغاية وربما غبي: أين تحقق كيف السلسلة الناتجة في $input يشبه؟ إذا قمت بذلك على سبيل المثال، فلن يتطابق طلب HTML Navigator الخاص بالسمات مع النظام الحقيقي في مصدر HTML حيث يعرض Firebug شجرة DOM التي تم إنشاؤها من المصدر (والتلاعب JavaScript المحتمل) مما يعني أنه يمكن إعادة ترتيب السمات في الإرادة ...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top