I have an array as below, which has multiple columns. I want to search in the first column for a specific value, and have the rows that match returned. Is that possible to do?
For example:
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
)
So let's say I want to search the "id" column for "1" and have the results displayed. How can this be done? Thank you so much!
If you are using PHP >= 5.5
, then you can use the new array_column(), in conjunction with array_keys() and array_map().
Given your array, $array
:
$keys = array_keys(array_column($array, 'id'), 1);
$new_array = array_map(function($k) use ($array){return $array[$k];}, $keys);
See demo
Since you have an nested Array
you need two iterations:
$filtered = array();
$rows = Your Array;
foreach($rows as $index => $columns) {
foreach($columns as $key => $value) {
if ($key == 'id' && $value == '1') {
$filtered[] = $columns;
}
}
}
This should do the job.
I found a much simpler solution that I think is worthwhile sharing with the world
in_array(1, array_column($yourArray, 'id'));
Tested on PHP >= 5.5
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With