有没有办法通过 PHP 插入键的方式来排序关联数组?
-
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 的 sort() 函数,但没有成功。我能想到的最接近的是我需要使用像 usort() 这样的东西,但我无法弄清楚如何编写一个可以完成我想要的功能的函数。
非常感谢有关此主题的任何建议,并非常感谢您的阅读。
解决方案
它应该已经以该顺序。 PHP数组进行排序,以便所述元件将在在其中插入的顺序。
您还需要调用empty()
不$value
$key
; $key
应该始终是非空。你也不需要isset()
以及empty()
。除了您的代码工作正常,并产生期望的输出。
我也警惕使用empty()
的,因为它会返回一个字符串真“0”。这可能是其将被忽略有效的参数值。您可以改为检查strlen($value) > 0
。
其他提示
通过 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
好像?如果你这样做,例如FireBug 的 HTML 导航器属性的顺序与 HTML 源中的实际顺序不匹配,因为 FireBug 显示从源生成的 DOM 树(以及潜在的 Javascript 操作),这意味着它可以随意重新排序属性...
不隶属于 StackOverflow