0

これが私が意味することの例です:

私は配列を持っています:

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 の sort() 関数を使用してみましたが、役に立ちませんでした。私が把握できる最も近いのは、usort() のようなものを使用する必要があるということですが、私が望むことを行う関数を作成する方法を理解するのに苦労しています。

このトピックに関するアドバイスは大歓迎です。読んでくれてありがとう。

4

2 に答える 2

2

すでにその順序になっているはずです。PHP 配列はソートされているため、要素は挿入した順序になります。

notempty()を呼び出す必要もあります。常に空であってはなりません。も必要ありません。それとは別に、コードは正常に機能し、目的の出力を生成します。$value$key$keyisset()empty()

empty()文字列「0」に対してtrueを返すため、使用にも注意が必要です。これは、無視される有効なパラメーター値である可能性があります。代わりにそれを確認できますstrlen($value) > 0

于 2009-07-14T10:59:44.470 に答える
2

PHP の対話型コマンドラインから次のコードを実行すると、Tom Haighの声明が肯定されます。

すでにその順序になっているはずです。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見えるかをどこで確認しますか? たとえば FireBug の HTML ナビゲータでこれを行うと、FireBug はソースから生成された DOM ツリー (および潜在的な Javascript 操作) を表示するため、属性の順序は HTML ソースの実際の順序と一致しません。つまり、属性を自由に並べ替えることができます。 ...

于 2009-07-14T11:25:35.557 に答える