2016-09-06 6 views
-1

に、私はこのクエリ(それが働いている)を持っている:PHP - 再arangeキーと値を配列

$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ループを使用していますか?

+1

$final_array = array_column($result, 'newFile', 'dateAdded'); 
それは[array_column()](http://www.php.net/manual/en/function.array-column.php)を使用して容易に行うことができる: '$結果= array_column($結果を、 'newFile'、 'dateAdded'); ' –

答えて

1

はちょうどarray_column

でそれを行うのforeachを必要としません

array_column - 入力配列の単一の列から値を返します。

array_column()は、入力の単一の列(column_keyで識別される)から値を返します。オプションで、index_keyを使用して、入力配列のindex_key列の値によって返された配列の値をインデックスすることができます。

0

foreachループが必要です。

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

いいえ、私はそれがMySQLのクエリで行うことはできないと思います。あなたはこのためforeachを使用することができます。

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

は、私は、クエリが十分ではないと思うので、これはforeachのループを使用していますが、私は間違っている可能性があり、次のコードを試してみてください。

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

私と一緒に動作します。 $キーを削除して値を使うことができます。

これは空の配列をとり、古い配列からカスタムキーを与え、それは連想配列なので名前を使用します。 D

グッドラックは、あなたがarray_mapを使用することができます

1

をmeyt:あなたが明確化が必要な場合は、より多くの助けのために私に尋ねることができ、そこから、あなたは=演算子を使用して値を割り当てることができますし、再び

を連想配列を使用します閉鎖で:

<?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);