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']);我在谷歌上搜索了一下,但没有得到任何想要的结果。请查看我更新的答案。我试图得到想要的结果。但它只给出了预期的最后一个值。我如何获得同一个键的所有值?