我需要在爆炸后在下面的数组中找到索引的字符串。所以在这个例子中我需要找到“真正”的索引。我怎么能这样做?
function explode2D($row_delim, $col_delim, $str) {
return array_map(function ($line) use ($col_delim) {
return explode($col_delim, $line);
}, explode($row_delim, $str));
} // - slick coding by trincot
$string = 'red<~>blue<~>orange[|]yellow<~>purple<~>green[|]really<~>dark<~>brown';
$array = explode2D("[|]", "<~>", $string);
返回
Array
(
[0] => Array
(
[0] => red
[1] => blue
[2] => orange
)
[1] => Array
(
[0] => yellow
[1] => purple
[2] => green
)
[2] => Array
(
[0] => really
[1] => dark
[2] => brown
)
)
所以我试过这个
$search = 'really';
$index = array_search($search, $array);
print($index);
没什么:(
答案 0 :(得分:1)
array_search
无效,因为您在数组数组中查找字符串。您需要遍历外部数组并在该数组内的每个集合array_search
。
foreach ($array as $key => $set) {
$index = array_search($search, $set);
if (false !== $index) {
echo "Found '$search' at index $index of set $key";
break;
}
}
我不确定你正在寻找哪个索引,因为有这样的结构,有两个索引指示你的搜索字符串在哪里,一个用于外部数组,一个用于内部数组。但是如果在找到$search
之后中断循环,那么$key
将是该点外部数组的正确索引,因此您将拥有它们。
答案 1 :(得分:0)
for ($i = 0; $i < count($array); $i++) {
if (($key = array_search($search, $array[$i])) !== false) {
var_dump(array($i, $key));
}
}
答案 2 :(得分:0)
尝试:
$search = 'really';
$index = -1;
$location = [];
foreach($i = 0; $i < sizeof($array); $i++){
for($j = 0; $j < sizeof($array[$i]); $j++){
if($search == $array[$i][$j]){
$location = [$i, $j];
$index++;
break;
} else {
$index++;
}
}
}
print_r($location); // This gives you the position where the match is found i.e. [2, 0];
echo $index; // This is the direct index of the search result i.e. 6
print($index);
这应该有效。没有尝试过,但它应该......