【问题标题】:Need help in array manipulation (php)在数组操作方面需要帮助 (php)
【发布时间】:2011-01-12 06:10:20
【问题描述】:

我有这个 $record 数组

array(4) { 
[0]=> array(2) { ["ROLE_ID"]=> string(1) "2" ["SUBFUNCTION_ID"]=> string(3) "904" } 
[1]=> array(2) { ["ROLE_ID"]=> string(1) "2" ["SUBFUNCTION_ID"]=> string(3) "903" } 
[2]=> array(2) { ["ROLE_ID"]=> string(1) "2" ["SUBFUNCTION_ID"]=> string(3) "902" } 
[3]=> array(2) { ["ROLE_ID"]=> string(1) "2" ["SUBFUNCTION_ID"]=> string(3) "901" } 
} 

我怎样才能操纵它,让它变成这样?

array("901","902","903","904");

提前致谢

【问题讨论】:

    标签: php arrays


    【解决方案1】:
    $subfunctionIds = array();
    
    foreach($record as $values) {
       $subFunctionIds[] = $values['SUBFUNCTION_ID'];
    }
    
    // If you want them reversed like in your example output...
    $subFunctionIds = array_reverse($subFunctionIds);
    
    var_dump($subFunctionIds);
    

    【讨论】:

    • 谢谢亚历克斯!我不敢相信它是那么简单:D
    【解决方案2】:
        function fetch($row) {
           return $row["SUBFUNCTION_ID"];
        }
        $result = array_map("fetch", $record);
        sort($result);
        var_dump($result);
    

    在 5.3+ 中你可以做得更好:

        $result = array_map(function ($row) { return $row["SUBFUNCTION_ID"]; }, $record);
        sort($result);
        var_dump($result);
    

    【讨论】:

    • 匿名函数确实更清晰 - 但是,在 5.3 之前,它有点难看(必须定义一个命名函数):P
    • @alex 你可以在 pre-5.3 中使用create_function(),但我不想在一个答案中加入太多内容:)
    • 是的,但也不是很漂亮。看起来就像 eval() 的包装器。 +1 array_map 和匿名函数。
    【解决方案3】:

    尝试这样做:

    foreach ($array as $row ) {   
      $response[] = $row["SUBFUNCTION_ID"]; 
    }
    print_r($response);
    

    【讨论】:

    • 那将有 $response 等于最后一个变量。
    • 您在$response[] = $row['SUBFUNCTION_ID']; 中缺少[]。这只会打印最后一个 ID
    • @Samuel Herzog 如果$response 不是数组,他也会收到警告。
    猜你喜欢
    • 1970-01-01
    • 2017-12-28
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多