很难表达我的问题,但这里有。我有一个这样的字符串:"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];
但是我现在需要能够做的是搜索数组的所有第一个值,找到一个特定的值,并返回它所在组中的其他值之一。例如,我需要找到"27"作为第一个值,然后在变量(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
像这样再运行一个foreach
循环:
$value_to_search = 27;
foreach($return_2d_array as $array){
if($array[0] == $value_to_search){
echo $array[1]; // will give 3
break;
}
}
下面是的实时演示