PHP - 重新排列数组中的键和值

时间:2016-09-06 08:35:43

标签: php arrays

我有这个查询(它正在运行):

 $filesQuery = "SELECT COUNT( cs_file.iduser ) AS newFile, DATE( cs_file.add_date ) AS
            dateAdded
            FROM cs_file
            INNER JOIN cs_team_has_user ON cs_team_has_user.iduser = cs_file.iduser
            INNER JOIN cs_portal_has_team ON cs_portal_has_team.idteam = cs_team_has_user.idteam
            WHERE cs_file.add_date  >= DATE(NOW()) - INTERVAL {$range} DAY
            AND cs_file.isImage = 0
            GROUP BY DATE( cs_file.add_date )
            WITH rollup";

查询给出了我的结果:

[0]=>
  array(2) {
    ["newFile"]=>
    string(2) "12"
    ["dateAdded"]=>
    string(10) "2016-03-23"
  }
  [1]=>
  array(2) {
    ["newFile"]=>
    string(1) "2"
    ["dateAdded"]=>
    string(10) "2016-04-01"
  }
  [2]=>
  array(2) {
    ["newFile"]=>
    string(2) "10"
    ["dateAdded"]=>
    string(10) "2016-04-22"
  }....

我需要做的是使 dateAdded 成为一个键,将 newFile(计数)作为一个值。像这样:

[
'2016-03-23' => '12',
'2016-04-01' => '2',
'2016-04-22' => '10'
]

查询可以实现吗?或者有一些更有效的方法,然后使用foreach循环?

5 个答案:

答案 0 :(得分:1)

不,我不认为可以使用Mysql查询完成。您可以使用foreach

$output = array();
foreach($output as $val){
    $output[ $val['dateAdded'] ] = $val['newFile'];
}
print_r($output);

答案 1 :(得分:1)

你可以使用<?php $r = array( array('idx'=>22, 'val'=>55), array('idx'=>33, 'val'=>77), array('idx'=>44, 'val'=>44), ); $result = array(); array_map(function($val) use (&$result) { $result[$val['idx']] = $val['val']; }, $r); print_r($result); 封闭:

netstat -apn | grep 27777

答案 2 :(得分:1)

不需要foreach只需使用array_column

array_column - 返回输入数组中单个列的值。

array_column()返回输入的单个列中的值,由column_key标识。 (可选)可以提供index_key,以通过输入数组的index_key列中的值索引返回数组中的值。

$final_array = array_column($result, 'newFile', 'dateAdded');

答案 3 :(得分:0)

你需要一个foreach循环。

$res = [];
foreach($array as $value){
  $res[$value['dateAdded']] = $value['newFile'];
}

答案 4 :(得分:0)

尝试以下代码,这使用foreach循环,因为我认为查询不够,但我可能错了。

$myarray = array();
foreach($yourarray as $key => $value)
{
  $myarray[$value['dateAdded']] = $value['newfile'];
}
print_r($myarray); //tocheack

它适用于我。您可以删除$ key并使用值。

这样做是一个空数组,从旧数组中给它一个自定义键,它使用名称,因为它是一个关联数组。然后从那里你可以使用=运算符分配一个值并再次使用关联数组

如果您需要澄清,可以向我提出更多帮助:D

Goodluck meyt