[英]PHP array. Simple split based on key
這更多是對快速建議的要求,因為我很難相信手頭的任務沒有本機功能。 考慮以下:
array =>
(0) => array("id" => "1", "groupname" => "fudge", "etc" => "lorem ipsum"),
(1) => array("id" => "2", "groupname" => "toffee", "etc" => "lorem ipsum"),
(2) => array("id" => "3", "groupname" => "caramel", "etc" => "lorem ipsum")
)
我想要得到的是一個僅使用“ groupname”的新數組,因此將等於:
array =>
(0) => "fudge",
(1) => "toffee",
(2) => "caramel"
)
我知道通過遞歸遍歷原始數組非常簡單,但是我想知道是否有更簡單的方法來獲得最終結果。 我在Internet和PHP手冊上四處張望,找不到任何東西
謝謝您閱讀此問題西蒙
為此有一個本機的array_column()函數(自PHP 5.5起):
$column = array_column($arr, 'groupname');
如果您使用的是PHP 5.3,則可以這樣使用array_map
[docs] :
$newArray = array_map(function($value) {
return $value['groupname'];
}, $array);
否則,創建一個正常函數並傳遞其名稱(請參見文檔)。
另一個解決方案是僅遍歷數組:
$newArray = array();
foreach($array as $value) {
$newArray[] = $value['groupname'];
}
您絕對不必使用遞歸。
所有數組鍵的值:
$array = [
["id"=>"1","user"=>"Ivan"],
["id"=>"2","user"=>"Ivan"],
["id"=>"3","user"=>"Elena"]
];
$res = [];
$array_separate = function($value, $key) use (&$res){
foreach($value AS $k=>$v) {
$res[$k][] = $v;
}
};
array_walk($array, $array_separate);
print_r($res);
結果:
Array
(
[id] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[user] => Array
(
[0] => Ivan
[1] => Ivan
[2] => Elena
)
)
http://sandbox.onlinephpfunctions.com/code/3a8f443283836468d8dc232ae8cc8d11827a5355
使用array_map
:
<?php
$a = array(
array("id" => "1", "groupname" => "fudge", "etc" => "lorem ipsum"),
array("id" => "2", "groupname" => "toffee", "etc" => "lorem ipsum"),
array("id" => "3", "groupname" => "caramel", "etc" => "lorem ipsum")
);
function get_groupname( $arr )
{
return $arr['groupname'];
}
$b = array_map( 'get_groupname', $a );
var_dump( $a );
var_dump( $b );
據我所知,PHP中沒有一個簡單的函數可以為您解決這個問題,數組結構是用戶定義的,因此您必須遍歷數組。 我能想到的最簡單的方法是這樣的:
for($i = 0;$i < count($main_array);$i++){
$groupname_array[] = $main_array[$i]["groupname"];
}
function array_get_keys(&$array, $key) {
foreach($array as &$value) $value = $value[$key];
}
array_get_keys($array, 'groupname');
要么
function array_get_keys(&$array, $key) {
$result = Array();
foreach($array as &$value) $result[] = $value[$key];
return $result;
}
$new_array = array_get_keys($array, 'groupname');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.