これは配列です。array_values を使用した後、配列はパラメータとして使用できない、オブジェクトも使用され、JSON も変換されるという ID impolde プロンプトに従って並べ替えられたようであることがわかりました。どうやって行けばいいですか?
更新:
これで十分ですが、新しい retlist 0 array_colum の後、出力結果 [0] が配列の末尾に移動しました。
代言2017-06-23 09:13:13
まず第一に、データ形式は JSON なので、最初に PHP 配列に変換する必要があります。
リーリーjson_decode
第二个参数为TRUE
はキー名を保持することを意味します。それ以外の場合、JSON が PHP 配列に変換された後、PHP 配列のキー名が並べ替えられます。
次に、 $a['data']
值用array_column
处理,或者使用array_values
データ内で配列の値を再配置します。
Data
中Data
为数组[]
を使用します。 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 は「要素はすべて最後まで実行されます」に対応します。
上記のコードには多くのコメントと説明がありますが、純粋なコードは次のとおりです:
リーリーさらにコンテンツを追加してみましょう。以下に、array_column
以外のいくつかの実行可能な解決策を示します。
このソリューションは、元のコードの変更に基づいています。
コードの最後から2行目に$retlist = ...
を追加します(上記
このソリューションも、元のコードの変更に基づいています。
コード内の$retlist[0] = $newarr;
改为array_unshift($retlist, $newarr);
上で述べたように、array_column
和array_values
都会重新编号,重新编号的顺序取决于你定义对应值的顺序,而并非是键名的数字顺序,所以上面这个修改,是用数组头部推入项替代$retlist[0]
と array_values
の両方の番号が付け直される順序は、キー名の番号順ではなく、対応する値を定義した順序に依存するため、上記の変更は次のようになります。配列を使用するには、ヘッダー プッシュ項目が、$retlist[0]
の値の定義と初期化を置き換えます。
これもコードに基づいて変更されます。
トラバースする前に、最初に $retlist[0] = []
,然后当你遍历到符合$makeupId
项的时候,直接赋值给$retlist[0]
,这样,由于事先定义了$retlist[0]
を定義します。これにより、番号が付け直されても、その順序は引き続き最初になります。
滿天的星座2017-06-23 09:13:13
これは、キー値を削除するだけで、多次元配列の 1 つの層を削除するのと同じという意味ですか?もしそうなら、大まかな例を書きました。上の図に示すように、このアイデアに従って実装できます