PHP-array_search在循环中不起作用

时间:2018-08-23 22:12:48

标签: php arrays search

我再次需要您的帮助..:/

我有一个循环,他们必须从另一个数组中的一个数组中搜索值,但这将无法正常工作。如果在循环之外测试此示例,请工作我的代码。

这是循环之外的示例:

$lol = array_search("terra",$alleFarben);
echo("LOOL: ".$lol);

output:
LOOL: 195

但是,如果我循环这样做,他找不到195。:

loop:

for ($i=0; $i <count($colorNameFin) ; $i++) {

$colorNameFin[$i] = strtolower($colorNameFin[$i]);
echo($colorNameFin[$i]);
$pos = array_search($colorNameFin[$i],$alleFarben);
echo("<br>");
echo($pos);
echo("<br>");
}
output:
terra 

artikel
156

artikel是数组'colorNameFin'中的下一个条目。而且我不明白,为什么array_search在循环之外而不是内部找到我的“ terra”。

感谢您的阅读:)

更新:

我有三个数组

1. colorNameFin = read color names from a csv like terra or blue fog and so on..
2. alleFarben = contains all of this colours on a specific position, like terra in colorNameFin = 195 in alleFarben
3. farbenNormal = contains the correct color to terra on the same position where it stored in alleFarben so i can read terra and search in farbenNormal[195] = yellow if i read terra in colorNameFin

2 个答案:

答案 0 :(得分:0)

您可以使用array_column($colorNameFin, 'column_key')从column_key列返回所有值,并将它们分配给一个新变量,这将是一个数组。然后在数组$colorNameFin[$i]

中搜索$words
<?php

$words = array_column($colorNameFin, 'column_key');
$found_key = array_search($colorNameFin[$i], $words);

答案 1 :(得分:0)

@Nick给了我正确的提示,我在数组alleFarben中搜索的字符串包含一个空格。因此,在数组alleFarben中找不到array_search正确的字符串,我的解决方案是在这里:

for ($i=0; $i <count($colorNameFin) ; $i++) { 
$colorNameFin[$i] = strtolower($colorNameFin[$i]);
$colorNameFin[$i] = str_replace(' ','',$colorNameFin[$i]);

$pos = array_search($colorNameFin[$i],$alleFarben);
$colorOut[$i] = $farbenNamenNormal[$pos];
}

感谢所有考虑过我的问题的人:)