PHP从数组创建数组并循环
我有以下代码:PHP从数组创建数组并循环,php,arrays,Php,Arrays,我有以下代码: foreach ($row as $item) { if (!in_array($item['login_id'], $tmp)) { $tmp[] = $item['brand']; $tmp[] = $item['login_id']; $tmp[] = $item['name']; } } 这将提供以下输出: array(408) { [0]=> string(4) "ABC" [1]=> string(8) "r4ft
foreach ($row as $item) {
if (!in_array($item['login_id'], $tmp)) {
$tmp[] = $item['brand'];
$tmp[] = $item['login_id'];
$tmp[] = $item['name'];
}
}
这将提供以下输出:
array(408) {
[0]=> string(4) "ABC"
[1]=> string(8) "r4ft6tg7"
[2]=> string(8) "Aberdeen"
[3]=> string(4) "ABC"
[4]=> string(8) "1ws3edft"
[5]=> string(18) "Birmingham Airport"
[6]=> string(4) "DDD"
[7]=> string(8) "bgt6yhnj"
[8]=> string(27) "Birmingham City"...}
然后,我尝试循环此数组,并使用以下命令将它们添加到下拉列表中:
$a = 0;
$b = 1;
$c = 2;
foreach ($tmp as $value) {
echo "<option name='".$value[$a]."'
value='".$value[$b]."'>
".$value[$c]."
</option>";
$a=$a+3;
$b=$b+3;
$c=$c+3;
}
$a=0;
$b=1;
$c=2;
foreach($tmp作为$value){
回声“
“$value[$c]”
";
$a=$a+3;
$b=$b+3;
$c=$c+3;
}
然而,输出是最奇怪的:
<option name='I' value='b'>i</option>
i
我期望和需要的输出是:
<option name='ABC' value='r4ft6tg7'>Aberdeen</option>
阿伯丁
如果您对我的错误有任何建议和反馈,我们将不胜感激。我相信这就是您的意思:
foreach ($row as $item) {
if (! array_key_exists($item['login_id'], $tmp)) {
$tmp[$item['login_id']] = array($item['brand'], $item['login_id'], $item['name']);
}
}
编辑:以上$tmp
的固定索引(以及如何检查索引)
然后,您的以下代码可以执行相同的操作,省略$a
、$b
、$c
(因此,将这三个变量一起省略):
foreach($tmp作为$value){
回声“
“$value[2]”
";
}
您错误地将$tmp
视为一维和二维数组。实际上,将其设置为二维数组可以解决这个问题。正如注释中所指出的,在原始代码中,$value
是一个字符串,访问字符串的索引就像访问数组一样会生成字符串中的给定字符
此外,为了清晰起见,您可以考虑在<代码> $tMP < /Case>中建立每个子数组。 例如。
$tmp[$item['login_id']]=array('brand'=>$item['brand']),…
然后在后一个foreach
循环中相应地访问它。$value
是一个字符串,因此访问$value[$x]
将产生字符串中该索引处的任何字符…您到底想实现什么?什么是$a
,$b
和$c
?啊,我正试图将我认为我们数组元素的值放入选项
输出中。例如,阿伯丁
@Clive-谢谢,非常感谢。我没有意识到它是一个字符串。是否应该$tmp[$item['login\u id']=array($item['brand',$item['login\u id'],$item['name'];)”实际上是$tmp[$item['login\u id']=array($item['brand'],$item['login\u id'],$item['name']))“半殖民地”放错地方了?是的,绝对是我的错。谢谢。没问题-谢谢你的帮助。虽然我仍然没有得到我期望的产出。我现在:-)很好,谢谢-这正是我想要的in_array
适用于一维数组方法(只要您没有其他数据可以与您的一个登录ID具有相同的值)。但由于登录ID似乎是唯一标识每一行的值,因此按该值对数组进行索引是有意义的。因此现在它是键,所以检查键而不是数组元素。
foreach ($tmp as $value) {
echo "<option name='".$value[0]."'
value='".$value[1]."'>
".$value[2]."
</option>";
}