用于匹配的PHP搜索阵列列

时间:2014-06-28 19:48:03

标签: php arrays search

我有一个如下数组,它有多列。我想在第一列中搜索特定值,并返回匹配的行。这可能吗?

例如:

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”并显示结果。如何才能做到这一点?非常感谢你!

6 个答案:

答案 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);

See demo

答案 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是给定的列)