搜索多维数组并返回特定值

时间:2016-10-11 19:44:30

标签: php arrays multidimensional-array

很难说出我的问题,但是这里有。我有一个像这样的字符串:“13,4,3 | 65,1,1 | 27,3,2”。每个子组的第一个值(例如 13 ,4,3)是数据库表中一行的id,其他数字是我用来做其他事情的值。

感谢“Always Sunny”,我可以使用以下代码将其转换为多维数组:

$data = '13,4,3|65,1,1|27,3,2';

$return_2d_array = array_map (
  function ($_) {return explode (',', $_);},
  explode ('|', $data)
);

我可以使用

返回任何值
echo $return_2d_array[1][0];

但我现在需要做的是搜索数组的所有第一个值并找到一个特定的值并返回i'ts组中的另一个值。例如,我需要找到“27”作为第一个值,然后在变量(3)中输出它的第二个值。

2 个答案:

答案 0 :(得分:3)

您可以遍历构建可用于搜索的数组的数据集:

$data = '13,4,3|65,1,1|27,3,2';
$data_explode = explode("|",$data); // make array with comma values

foreach($data_explode as $data_set){
    $data_set_explode = explode(",",$data_set); // make an array for the comma values
    $new_key = $data_set_explode[0]; // assign the key
    unset($data_set_explode[0]); // now unset the key so it's not a value..
    $remaining_vals = array_values($data_set_explode); // use array_values to reset the keys
    $my_data[$new_key] = $remaining_vals; // the array!
}

if(isset($my_data[13])){ // if the array key exists
    echo $my_data[13][0];
    // echo $my_data[13][1]; 
    // woohoo!
}

这里有效:http://sandbox.onlinephpfunctions.com/code/404ba5adfd63c39daae094f0b92e32ea0efbe85d

答案 1 :(得分:2)

再运行一个foreach循环:

$value_to_search = 27;
foreach($return_2d_array as $array){ 
    if($array[0] == $value_to_search){ 
        echo $array[1];  // will give 3
        break; 
    } 
}

这里是live demo