有没有一种干净的方法来排列这个数组,使键成为 id?我已经使用几个 foreach 和一个新数组来放置信息,但我使用了大约 7 行代码,想知道是否有更干净的东西。有问题的数组是:
Array (
[0] => Array ( [log_id] => 6 [type] => Test [other_info] => MoreInfo )
[1] => Array ( [log_id] => 5 [type] => Test2 [other_info] => MoreInfo2 )
)
所以我想从上面的数组中获取的是:
Array (
[6] => Array ( [type] => Test [other_info] => MoreInfo )
[5] => Array ( [type] => Test2 [other_info] => MoreInfo2 )
)
你可以看到我现在把日志id作为键。这需要我写几行代码...您知道如何最多在 3 或 4 行内实现这一点吗?
或者,是否有更清晰的方法来访问包含我想要的 *log_id* 的行?我想提供的用途是我可以访问某个 *log_id* 的行...在这种情况下,我将使用 $array[$log_id]
来实现...但是如果有一个解决方案可以在不改变数组(并且只有 1 行)的情况下做到这一点,我也会接受这个答案!
谢谢!
最佳答案
您不应该担心代码行,优雅的代码是自文档化的,这意味着您可以阅读它并理解它的作用。它包含所需的最少行数,这通常需要更长的编码时间。
与优雅代码相反的是压缩的、神秘的代码,就像这个代码,它可以满足您所需要的数组的需要(我将其放入 $data
, Demo ):
$data = array_reduce($data, function($v, $w) { $v[array_shift($w)] = $w; return $v;});
虽然只有一行代码,但并不优雅。
这可以读得更好:
/**
* You can leave a comment here.
* @return array $data keyed with first value of each value
*/
function first_as_key(Array $data)
{
$keyed = array();
foreach($data as $v)
$keyed[array_shift($v)] = $v
;
return $keyed;
}
大多数情况下,手头的数据以不需要转置的形式保存会更好。此外,如果您需要转置,请为自己创建一个可以完成这项工作的函数。
关于php - 重新排列数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7666319/