連想配列をチェックする方法はたくさんありますが、 "完全連想"配列をどうやってチェックしますか?PHP〜完全連想配列をテストする方法
ここで、$ johnは完全結合であり、$ mary1と$ mary2は完全結合ではありません。
連想配列をチェックする方法はたくさんありますが、 "完全連想"配列をどうやってチェックしますか?PHP〜完全連想配列をテストする方法
ここで、$ johnは完全結合であり、$ mary1と$ mary2は完全結合ではありません。
すべての配列が同じ方法で実装されているため、簡潔にすることはできません。 docsから:
PHPの配列は、実際に命じマップです。マップは、キーに値を関連付けるタイプです。
の場合は、実装には洞察力を持っていないが、私はarray(1,2,3)
はすなわち、最終的に、それはまったく同じです、array(0=>1, 1=>2, 2=>3)
ためだけの省略形であることを確信しています。あなたがそれを区別できるものは何もありません。
あなただけ仮定できarray(value, value,...)
で作成された配列は0
でインデックスを持っているし、他の人がいないこと。しかし、あなたはすでにこれが必ずしも当てはまるとは限りません。
「結合」配列を検出しようとするたびに、ある時点で失敗します。
実際の質問はなぜですか?
あなたは正しいです。だからこそ$ mary1 === $ mary2! – AdeleK
なぜですか?私はいくつかのconfig配列を調べ、それらが正しく設定されていることを確認する必要があるので。 – AdeleK
@AdeleK:あなたのケースで正しく設定されていることはどういう意味ですか?あなたはどのようにconfigアレイにアクセスしますか?有効なキーだけが含まれており、すべてのキーが含まれていることを確認したい場合は、それらのキーを使用して配列を定義し、 'array_intersect($ keys、array_keys($ config))'が空であるかどうかを確認できます。たぶんあなたの問題を実際に述べるほうが、可能な解決法がうまくいくかどうかを尋ねるよりも良いのですが)(しかし、あなたはその質問のために新しい質問を作成するべきです)。 –
これはあなたが探しているものですか?
<?php
function is_assoc($array) {
if(!is_array($array) || array_keys($array) == range(0, count($array) - 1)) {
return(false);
}
foreach($array as $value) {
if(is_array($value) && !is_assoc($value)) {
return(false);
}
}
return(true);
}
?>
検出は、関連性の定義によって異なります。この関数は、シーケンシャルな数値キーを持たない配列を意味する結合をチェックします。連想は、キーが暗黙的に設定されたもので、phpによって計算されたものではないと言う人もいます。他の人は、すべてのPHP配列を結合型として定義することもできます(この場合、is_array()
は十分です)。繰り返しますが、それはすべて依存しますが、これは私のプロジェクトで使用する関数です。うまくいけば、それはあなたのために十分です。
悲しいことに、配列が完全に結合していることを確認する方法を探しています。私は、すべてのキーが定義されており、自動的に設定されないことを意味します。これは、文字列キーだけとは関係ありません。 – AdeleK
これはまさにこの機能の役割です。 PHPが自動的に設定するキーは、0から始まる数字です。この関数は、配列またはサブ配列のすべてのキーが0から始まる連続した数値である場合にのみfalseを返しますが、 PHPが配列を処理する方法。私の知る限りでは、関連するキーと値のペアが「自動的にキーを設定した」値と混在していることを検出する方法はありません。 –
私の知るところでは:-)それで、私はここに来て、私がいかに正しいか悪いかを見ようとしたのです。ありがとう – AdeleK
チェック連想配列ではどういう意味ですか?すべての値に指定されたキーがあることを意味しますか? – alexn
「チェック」は何を意味しますか?配列に連想キーのみが含まれているかどうかを知りたいですか?連想配列を循環させて値をチェックしますか?あなたがここで何を求めているのか分かりません。 – dqhendricks
'$ john'と' $ mary1'の違いはわかりません。 –