我有一个如下数组,它有多列。我想在第一列中搜索特定值,并返回匹配的行。这可能吗?
例如:
Array (
[0] => Array ( [id] => 1 [column2] => value2 [column3] => value3 [column4] => value4 [column5] => value5 )
[1] => Array ( [id] => 1 [column2] => value2 [column3] => value3 [column4] => value4 [column5] => value5 )
[2] => Array ( [id] => 2 [column2] => value2 [column3] => value3 [column4] => value4 [column5] => value5
)
所以我想说我想在“id”列中搜索“1”并显示结果。如何才能做到这一点?非常感谢你!
答案 0 :(得分:7)
如果您使用的是PHP >= 5.5
,那么您可以结合array_column()和array_keys()使用新的array_map()。
根据您的数组,$array
:
$keys = array_keys(array_column($array, 'id'), 1);
$new_array = array_map(function($k) use ($array){return $array[$k];}, $keys);
答案 1 :(得分:4)
由于你有一个嵌套的Array
,你需要两次迭代:
$filtered = array();
$rows = Your Array;
foreach($rows as $index => $columns) {
foreach($columns as $key => $value) {
if ($key == 'id' && $value == '1') {
$filtered[] = $columns;
}
}
}
这应该可以胜任。
答案 2 :(得分:1)
使用此功能:
global $result;
function array_searc_result($array,$key,$value)
{
global $result;
foreach($array as $k=>$v)
{
if(array_key_exists($key,$v) && ($v[$key] == $value))
{
$result[] = $v;
}
}
return $result;;
}
$data = array_searc_result($array,'id',2);
echo '<pre>';
print_r($data);
echo '</pre>';
$ array是给定的数组变量。
答案 3 :(得分:0)
我发现了一个更简单的解决方案,我认为值得与世界分享
in_array(1, array_column($yourArray, 'id'));
在PHP上测试&gt; = 5.5
答案 4 :(得分:0)
我使用此助手按键/值查找匹配项:
function array_search_by_key($array, $key, $value) {
if(!is_array($array)) {
return [];
}
$results = [];
foreach($array as $element) {
if(isset($element[$key]) && $element[$key] == $value) {
$results[] = $element;
}
}
return $results;
}
答案 5 :(得分:0)
这些步骤将始终在使用唯一id列的数组中返回一行(在此示例中,第一列为0)
1)获取仅包含ID的数组
$ids = array_column($my_table, 0);
2)查找具有我的ID的行
$row_index = array_search($id, $ids);
(其中$ id是特定ID)
3)然后我可以使用
$my_table[$row_index][n]
(其中n是给定的列)