从db获取结果时,是否可以设置将成为数组中键的字段名?列出方法不合适,因为有超过1个值。
基本上我有:
array(4) {
[0]=>
array(3) {
["DevID"]=>
string(6) "448805"
["Active"]=>
string(1) "0"
["SiteType"]=>
string(1) "1"
}
[1]=>
array(3) {
["DevID"]=>
string(6) "487195"
["Active"]=>
string(1) "0"
["SiteType"]=>
string(1) "1"
}
[2]=>
array(3) {
["DevID"]=>
string(6) "487732"
["Active"]=>
string(1) "0"
["SiteType"]=>
string(1) "1"
}
[3]=>
array(3) {
["DevID"]=>
string(6) "488805"
["Active"]=>
string(1) "0"
["SiteType"]=>
string(1) "1"
}
}
我需要:
array(4) {
[448805]=>
array(3) {
["DevID"]=>
string(6) "448805"
["Active"]=>
string(1) "0"
["SiteType"]=>
string(1) "1"
}
[487195]=>
array(3) {
["DevID"]=>
string(6) "487195"
["Active"]=>
string(1) "0"
["SiteType"]=>
string(1) "1"
}
[487732]=>
array(3) {
["DevID"]=>
string(6) "487732"
["Active"]=>
string(1) "0"
["SiteType"]=>
string(1) "1"
}
[488805]=>
array(3) {
["DevID"]=>
string(6) "488805"
["Active"]=>
string(1) "0"
["SiteType"]=>
string(1) "1"
}
}
答案 0 :(得分:1)
只需遍历第一个数组,然后使用第一个数据创建另一个数组。
$arr2 = array();
foreach ($arr1 as $val) {
$arr2[$val['DevID']] = $val;
}
答案 1 :(得分:1)
我发现自己做了很多,所以我为它创建了一个函数:
function array_index(array $array, $key)
{
$index = array();
$count = count($array);
for ($i = 0; $i < $count; $i++)
{
if (!array_key_exists($key, $array[$i]))
{
continue;
}
$index[$array[$i][$key]] = $array[$i];
}
return $index;
}
用法:
$index = array_index($yourDbResult, 'DevID');
这是一个类似的功能,但你传递一个callable作为键。 callable将接收数组中的每个项目,其返回值将用作索引键。用于对索引键执行某些操作。
function array_index_callback(array $array, $callback)
{
$index = array();
$count = count($array);
for ($i = 0; $i < $count; $i++)
{
$indexKey = $callback($array[$i]);
$index[$indexKey] = $array[$i];
}
return $index;
}
用法:
$index = array_index_callback($yourDbResult, function(&$item) {
return 'id_'.$item['DevID'];
});