Php 为另一个数组设置数组值键
表中的值如下所示:Php 为另一个数组设置数组值键,php,mysql,arrays,Php,Mysql,Arrays,表中的值如下所示: id entity_id value 1 1 summer test 2 1 summer-test 3 2 winter test 4 2 winter-test Iam使用此sql查询从数据库获取结果: $query = 'SELECT entity_id,value FROM blogs'; $results = $readConnection->fetchAll($query)
id entity_id value
1 1 summer test
2 1 summer-test
3 2 winter test
4 2 winter-test
Iam使用此sql查询从数据库获取结果:
$query = 'SELECT entity_id,value FROM blogs';
$results = $readConnection->fetchAll($query);
它以这种形式给出了结果:
[0] => Array
(
[entity_id] => 1 // this is common, so this should be key for new array
[value] => summer event
)
[1] => Array
(
[entity_id] => 1
[value] => summer-event
)
............... and so on....
现在,我希望新阵列如下所示:
[1] => Array
(
[name] => summer event
[path] => summer-event
)
[2] => Array
(
[name] => test event
[path] => test-event
)
我试过这个:
$newArray = [];
foreach($results as $v)
{
$newArray[$v['entity_id']] = $v['value'];
}
print_r($newArray);
它给出了所有实体的最后一个值
Array
(
[1] => summer-test
[2] => winter-test
)
由于您的值取决于现有列,您可以尝试此查询以获取输出,然后可以处理数组
$query = 'SELECT value AS name,REPLACE(value ,' ','-') AS path FROM blogs';
$results = $readConnection->fetchAll($query);
在第2列中,它将用(-)替换空格。它会还给你的
[0] => Array
(
[name] => summer event
[path] => summer-event
)
[1] => Array
(
[name] => test event
[path] => test-event
)
由于数据库中没有存储名称,因此这里唯一的选择是在使用结果数组之前处理它
// Create a new empty array
$proccessed_array = array();
// loop through the existing array and populate the new array
foreach ($results as $result) {
$proccessed_array[] = array(
'name' => str_replace('-', ' ', $result['value']), // You modify the path in order to be used as name
'path' => $result['value'] // You keep this value to the new array
);
}
从基于
$results
示例的数据集:
$results = [
[
'entity_id' => 3,
'value' => 'Fall Event',
],
[
'entity_id' => 2,
'value' => 'Summer Event',
],
[
'entity_id' => 1,
'value' => 'Spring Event',
],
[
'entity_id' => 4,
'value' => 'Winter Event',
],
];
$events = array_reduce($results, function ($carry, $item) {
$carry[$item['entity_id']] = [
'name' => $item['value'],
'path' => $item['value'],
];
return $carry;
}, $inital = []);
print_r($events);
这将显示以下内容:
Array
(
[3] => Array
(
[name] => Fall Event
[path] => Fall Event
)
[2] => Array
(
[name] => Summer Event
[path] => Summer Event
)
[1] => Array
(
[name] => Spring Event
[path] => Spring Event
)
[4] => Array
(
[name] => Winter Event
[path] => Winter Event
)
)
为什么数据库没有列
名称
和路径
?您能告诉我们您为获得所需的数组做了哪些尝试吗?(请包括您遇到的任何错误。)@Aashi您听说过列别名吗?我尝试过:foreach($results as$result){$blogs[]=array($result['entity_id']=>$result['value']);我在谷歌上搜索了一下,但没有得到任何想要的结果。请查看我更新的答案。我试图得到想要的结果。但它只给出了预期的最后一个值。我如何获得同一个键的所有值?