検索

ホームページ  >  に質問  >  本文

php - 多次元配列の最も外側のキーを削除し、値を保持します

これは配列です。array_values を使用した後、配列はパラメータとして使用できない、オブジェクトも使用され、JSON も変換されるという ID impolde プロンプトに従って並べ替えられたようであることがわかりました。どうやって行けばいいですか?

更新:

これで十分ですが、新しい retlist 0 array_colum の後、出力結果 [0] が配列の末尾に移動しました。

phpcn_u1582phpcn_u15822720日前2519

全員に返信(3)返信します

  • 代言

    代言2017-06-23 09:13:13

    JSONをPHP配列に変換したい場合の方法は以下の通りです

    まず第一に、データ形式は JSON なので、最初に PHP 配列に変換する必要があります。

    リーリー

    json_decode第二个参数为TRUE はキー名を保持することを意味します。それ以外の場合、JSON が PHP 配列に変換された後、PHP 配列のキー名が並べ替えられます。

    次に、 $a['data']值用array_column处理,或者使用array_values データ内で配列の値を再配置します。

    リーリー

    PHP を JSON に変換したい場合は、DataData为数组[] を使用します。

    PHP 配列内にある限り、まず上記の手順に従ってください array_column或者array_values处理过$a['Data'] それから直接実行します

    リーリー

    注意json_encode第二个参数绝对不能用JSON_FORCE_OBJECT,否则还是会使Data变为对象{}

    アップデート

    コードを読んだ後、あなたは元の配列のID値を調べたいと考えているようですが、$makeupId相等的项,然后把它提前到数组第一个?如果是这样你的代码写复杂了。通过array_column()この魔法の関数はあなたのニーズを簡単に実現します。コードは次のとおりです

    リーリー

    コードの終わり


    それでは、なぜ array_values()array_column()都会使顺序变乱。因为这两个函数都是会重新编号的,而且它编号的顺序,不是你键名的标签顺序,也就是说你键名手动写成0,1,2,3并不会使它重新编号时候按照0,1,2,3 を使って並べ替えをするのか、もう一度お話します。番号が付け直される順序は、コードが実行される順序によって異なります。言い換えれば、最後の...[0] = $newarr は実際には配列の先頭ではなく、配列全体の末尾にあるだけなので、どんなに頑張ってもキー名が 0 になっているだけです。 、この 0 は「要素はすべて最後まで実行されます」に対応します。


    アップデート2

    上記のコードには多くのコメントと説明がありますが、純粋なコードは次のとおりです:

    リーリー

    アップデート3

    さらにコンテンツを追加してみましょう。以下に、array_column以外のいくつかの実行可能な解決策を示します。

    オプション 1:

    このソリューションは、元のコードの変更に基づいています。
    コードの最後から2行目に$retlist = ...を追加します(上記

    ) リーリー

    オプション 2:

    このソリューションも、元のコードの変更に基づいています。
    コード内の$retlist[0] = $newarr;改为array_unshift($retlist, $newarr);

    を変更します

    上で述べたように、array_columnarray_values都会重新编号,重新编号的顺序取决于你定义对应值的顺序,而并非是键名的数字顺序,所以上面这个修改,是用数组头部推入项替代$retlist[0]array_values の両方の番号が付け直される順序は、キー名の番号順ではなく、対応する値を定義した順序に依存するため、上記の変更は次のようになります。配列を使用するには、ヘッダー プッシュ項目が、$retlist[0] の値の定義と初期化を置き換えます。

    オプション 3:

    これもコードに基づいて変更されます。
    トラバースする前に、最初に $retlist[0] = [],然后当你遍历到符合$makeupId项的时候,直接赋值给$retlist[0],这样,由于事先定义了$retlist[0] を定義します。これにより、番号が付け直されても、その順序は引き続き最初になります。

    返事
    0
  • 滿天的星座

    滿天的星座2017-06-23 09:13:13

    これは、キー値を削除するだけで、多次元配列の 1 つの層を削除するのと同じという意味ですか?もしそうなら、大まかな例を書きました。上の図に示すように、このアイデアに従って実装できます

    返事
    0
  • 欧阳克

    欧阳克2017-06-23 09:13:13

    処理を容易にするために、json データを php 配列に変換するのが最善です。そうしないと対処が難しくなります。

    返事
    0
  • キャンセル返事