これは配列です。array_values を使用した後、配列はパラメータとして使用できない、オブジェクトも使用され、JSON も変換されるという ID impolde プロンプトに従って並べ替えられたようであることがわかりました。どうやって行けばいいですか?
更新:
これで十分ですが、新しい retlist 0 array_colum の後、出力結果 [0] が配列の末尾に移動しました。
まず第一に、データ形式は JSON なので、最初に PHP 配列に変換する必要があります。
json_decode第二个参数为TRUE はキー名を保持することを意味します。それ以外の場合、JSON が PHP 配列に変換された後、PHP 配列のキー名が並べ替えられます。
json_decode
TRUE
次に、 $a['data']值用array_column处理,或者使用array_values データ内で配列の値を再配置します。
$a['data']
array_column
array_values
Data
[]
PHP 配列内にある限り、まず上記の手順に従ってください array_column或者array_values处理过$a['Data'] それから直接実行します
$a['Data']
注意json_encode第二个参数绝对不能用JSON_FORCE_OBJECT,否则还是会使Data变为对象{}。
json_encode
JSON_FORCE_OBJECT
{}
コードを読んだ後、あなたは元の配列のID値を調べたいと考えているようですが、$makeupId相等的项,然后把它提前到数组第一个?如果是这样你的代码写复杂了。通过array_column()この魔法の関数はあなたのニーズを簡単に実現します。コードは次のとおりです
$makeupId
array_column()
コードの終わり
それでは、なぜ array_values()和array_column()都会使顺序变乱。因为这两个函数都是会重新编号的,而且它编号的顺序,不是你键名的标签顺序,也就是说你键名手动写成0,1,2,3并不会使它重新编号时候按照0,1,2,3 を使って並べ替えをするのか、もう一度お話します。番号が付け直される順序は、コードが実行される順序によって異なります。言い換えれば、最後の...[0] = $newarr は実際には配列の先頭ではなく、配列全体の末尾にあるだけなので、どんなに頑張ってもキー名が 0 になっているだけです。 、この 0 は「要素はすべて最後まで実行されます」に対応します。
array_values()
0,1,2,3
上記のコードには多くのコメントと説明がありますが、純粋なコードは次のとおりです:
さらにコンテンツを追加してみましょう。以下に、array_column以外のいくつかの実行可能な解決策を示します。
このソリューションは、元のコードの変更に基づいています。 コードの最後から2行目に$retlist = ...を追加します(上記
$retlist = ...
このソリューションも、元のコードの変更に基づいています。 コード内の$retlist[0] = $newarr;改为array_unshift($retlist, $newarr);
$retlist[0] = $newarr;
array_unshift($retlist, $newarr);
上で述べたように、array_column和array_values都会重新编号,重新编号的顺序取决于你定义对应值的顺序,而并非是键名的数字顺序,所以上面这个修改,是用数组头部推入项替代$retlist[0] と array_values の両方の番号が付け直される順序は、キー名の番号順ではなく、対応する値を定義した順序に依存するため、上記の変更は次のようになります。配列を使用するには、ヘッダー プッシュ項目が、$retlist[0] の値の定義と初期化を置き換えます。
$retlist[0]
これもコードに基づいて変更されます。 トラバースする前に、最初に $retlist[0] = [],然后当你遍历到符合$makeupId项的时候,直接赋值给$retlist[0],这样,由于事先定义了$retlist[0] を定義します。これにより、番号が付け直されても、その順序は引き続き最初になります。
$retlist[0] = []
これは、キー値を削除するだけで、多次元配列の 1 つの層を削除するのと同じという意味ですか?もしそうなら、大まかな例を書きました。上の図に示すように、このアイデアに従って実装できます
処理を容易にするために、json データを php 配列に変換するのが最善です。そうしないと対処が難しくなります。
JSONをPHP配列に変換したい場合の方法は以下の通りです
まず第一に、データ形式は JSON なので、最初に PHP 配列に変換する必要があります。
リーリーjson_decode
第二个参数为TRUE
はキー名を保持することを意味します。それ以外の場合、JSON が PHP 配列に変換された後、PHP 配列のキー名が並べ替えられます。次に、
リーリー$a['data']
值用array_column
处理,或者使用array_values
データ内で配列の値を再配置します。PHP を JSON に変換したい場合は、
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 は「要素はすべて最後まで実行されます」に対応します。アップデート2
上記のコードには多くのコメントと説明がありますが、純粋なコードは次のとおりです:
リーリーアップデート3
さらにコンテンツを追加してみましょう。以下に、
array_column
以外のいくつかの実行可能な解決策を示します。オプション 1:
このソリューションは、元のコードの変更に基づいています。
) リーリーコードの最後から2行目に
$retlist = ...
を追加します(上記オプション 2:
このソリューションも、元のコードの変更に基づいています。
を変更しますコード内の
$retlist[0] = $newarr;
改为array_unshift($retlist, $newarr);
上で述べたように、
array_column
和array_values
都会重新编号,重新编号的顺序取决于你定义对应值的顺序,而并非是键名的数字顺序,所以上面这个修改,是用数组头部推入项替代$retlist[0]
とarray_values
の両方の番号が付け直される順序は、キー名の番号順ではなく、対応する値を定義した順序に依存するため、上記の変更は次のようになります。配列を使用するには、ヘッダー プッシュ項目が、$retlist[0]
の値の定義と初期化を置き換えます。オプション 3:
これもコードに基づいて変更されます。
トラバースする前に、最初に
$retlist[0] = []
,然后当你遍历到符合$makeupId
项的时候,直接赋值给$retlist[0]
,这样,由于事先定义了$retlist[0]
を定義します。これにより、番号が付け直されても、その順序は引き続き最初になります。これは、キー値を削除するだけで、多次元配列の 1 つの層を削除するのと同じという意味ですか?もしそうなら、大まかな例を書きました。上の図に示すように、このアイデアに従って実装できます
処理を容易にするために、json データを php 配列に変換するのが最善です。そうしないと対処が難しくなります。