oom*_*pah 2 php multidimensional-array
我有一个数组数组,我想复制第一列
数据如下所示:
(0=>"homer", 1=> 1, 2=> 2, 3=> 3)
(0 => "marge", 1=> 2, 2 => 4, 3=> 8)
(0 => "bart", 1 => 6, 2 => 2, 3 => 7)
(0 => "lisa", 1 => 16, 2 => 20, 3 => 71)
Run Code Online (Sandbox Code Playgroud)
是否有一个PHP函数(类似于array_search),我可以用它来搜索第一个"列"中的名称匹配?
第一列中的数据已经排序,所以如果我可以复制"column1",我可以执行一个array_search(我假设使用了一个bsearch,而不是通过元素迭代的一个天真元素).
我的问题是:
是否有类似于array_search的PHP函数,我可以用它来搜索2D数组第1列中的匹配项?
如果失败了,是否有一个PHP函数将第一列复制到一维数组(同时保留顺序),所以我可以调用array_search吗?
是否有类似于array_search的PHP函数,我可以用它来搜索2D数组第1列中的匹配项?
你可以使用array_filter
$matchedArray = array_filter($myArray, function($x) use ($nameToSearchFor) {
return $x[0] == $nameToSearchFor;
});
Run Code Online (Sandbox Code Playgroud)
然后给出:
$myArray = array(
array(0=>"homer", 1=> 1, 2=> 2, 3=> 3),
array(0 => "marge", 1=> 2, 2 => 4, 3=> 8),
array(0 => "bart", 1 => 6, 2 => 2, 3 => 7),
array(0 => "lisa", 1 => 16, 2 => 20, 3 => 71),
);
$nameToSearchFor = "bart";
Run Code Online (Sandbox Code Playgroud)
会产生:
$matchedArray === array(0 => "bart", 1 => 6, 2 => 2, 3 => 7);
Run Code Online (Sandbox Code Playgroud)
我使用了闭包,只能在PHP 5.3.0中使用,但你在旧版本的php中使用传统的回调或create_function
如果失败了,是否有一个PHP函数将第一列复制到一维数组(同时保留顺序),所以我可以调用array_search吗?
见deceze的第一个选项.我认为没有必要重复一个非常好的答案.