簡體   English   中英

PHP Array重新排列數字鍵作為父母鍵

[英]PHP Array rearrange numeric key as parrent key

我想重新排列一個簡單的多維數組。

Array
    (
        [pieces] => Array
            (
                [0] => 2
                [1] => 9
            )
        [start] => Array
            (
                [0] => 0001
                [1] => 9901
            )
        [end] => Array
            (
                [0] => 0002
                [1] => 9909
            )
        [group] => Array
            (
                [0] => 0001-0100
                [1] => 9901-9999
            )
    )

Array
(
    [tokens] => Array
        (
            [0] =>  Array
                (
                    [start] => 0001
                    [end] => 0002
                    [pieces] => 2
                    [group] => 0100
                )
            [1] =>  Array
                (
                    [start] => 9901
                    [end] => 9909
                    [pieces] => 9
                    [group] => 9901-9999
                )
        )
)

我已經嘗試過類似的事情:

$keys = array_keys($array);
foreach ($keys as $key => $val) {       
    foreach ($array as $k => $v){
        foreach($array[$v] as $tk => $tv){
            if($val == $k){
                $new['tokens'][][$val] = $tv;
            }
        }
    }
}

數字是我從表單中輸入的一組令牌,

請誰能解釋我做錯了什么? 我用不同的代碼工作了幾個小時(我知道解決方案很簡單),但我有點困惑:/

非常感謝你!

BR KK

第四鳥的解決方案非常嚴格,因為:

  • 在循環條件中需要一個顯式定義的鍵。
  • 強制整個結果中的項不超過一個鍵。
  • 假定並強制輸入鍵是順序的且索引為零。

無論如何,以下內容都可以工作:

foreach( $array as $y => $inner ) {
    foreach( $inner as $x => $value ) {
        $new['tokens'][$x][$y] = $value;
    }
}

演示: https : //3v4l.org/Rmdtd


編輯:我認為值得保留第四鳥對他現在已刪除的答案中所發布代碼的麻煩的解釋:

您正在嘗試索引$array[$v] ,但是$v是子數組之一。 根據數組文檔

數組和對象不能用作鍵。 這樣做將導致警告:偏移量類型非法

在開發代碼時,請確保將error_reporting設置為E_ALL ,以便可以看到指示當前和/或將來問題的非關鍵消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM