我的数据库中有一个表用于存储设置。它包含“ id”,“ name”和“ value”列。我需要选择所有它们并使用键来简单地获取值。
SELECT * FROM settings
结果是:
array( array(id1, name1, value1), array(id2, name2, value2), ... )
我需要简单地调用值,例如:
$value1 = $settings['name1'];
所以我应该将结果数组转换为此:
array( name1 => value1, name2 => value2, ... )
如何使用PHP做到这一点?
您可以使用一系列内置函数来实现这一点,例如:
$a = array( array("key1" => "value1"), array("key2" => "value2"), array("key3" => "value3"));
$b = array_combine(
array_map('key', $a),
array_map('end', $a));
或者
$b = array_reduce($a, function($x, $y) { return $x + $y; }, $a[0]);
但是,php中的循环通常更干净,更容易理解并且更高效:
$b = array();
foreach($a as $item)
$b += $item;
没有合理的理由避免循环。
UPD,根据您的更新
$a = array( array('id1', 'name1', 'value1'), array('id2', 'name2', 'value2'));
$b = array_combine(
array_column($a, 1),
array_column($a, 2));
退货 [name1] => value1, [name2] => value2
如果您的php不支持array_column
,则可以包含shim,也可以只使用一个循环,这又变得更简单易读:
foreach($a as $x)
$result[ $x[1] ] = $x[2];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句