Php 是否可以为数据库中的关联结果设置密钥?
从db获取结果时,是否可以设置作为数组中键的字段名?列出不适合的方法,因为存在多个值 基本上我有:Php 是否可以为数据库中的关联结果设置密钥?,php,laravel,Php,Laravel,从db获取结果时,是否可以设置作为数组中键的字段名?列出不适合的方法,因为存在多个值 基本上我有: array(4) { [0]=> array(3) { ["DevID"]=> string(6) "448805" ["Active"]=> string(1) "0" ["SiteType"]=> string(1) "1" } [1]=> array(3) { ["DevID"]=>
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"
}
}
只需循环第一个数组,并使用第一个数组中的数据创建另一个数组
$arr2 = array();
foreach ($arr1 as $val) {
$arr2[$val['DevID']] = $val;
}
我发现自己经常这样做,所以我为它创建了一个函数:
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;
}
这里有一个类似的函数,但是您传递了一个可调用函数作为键。可调用项将接收数组中的每个项,其返回值将用作索引键。用于对索引键执行某些操作
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;
}
只需在第一个数组中进行循环,并使用第一个数组中的数据创建第二个数组。
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'];
});