答えて
存在するすべてのプログラミング言語と同様に、文字列は文字の配列として格納されます。私がやった場合
:
$area = "Dhaka";
echo $area[0];
それはD
を返します。
私も実行して文字列全体をエコーできます
echo $area[0].$area[1].$area[2].$area[3].$area[4];
PHP will also type juggle a string into 0
整数のみを受け付け形で渡されたとき。
そうすることによって:
echo $area['division'];
をあなたは基本的にやっているでしょう:
echo $area[0];
と再びを、D
を取得。
だからこそ、isset($area['division'])
はtrue
の値を返します。
なぜ$area['foo']['bar']
(別名$area[0][0]
)が機能しないのですか? $area
は1次元配列にすぎないためです。
is_array($area) && isset($area['division'])
は配列 – xendi
:
あなたは、文字列や配列可能性がいずれかの変数を操作しているこの問題に対処する最善の方法は、配列としてあなたの変数を扱うしようとする前にis_array()
でテストすることですこれは予想される動作です。
あなたは()の代わりに、空試すことができます。
'!empty($ area ['division'])'は '$ area ['division'] === 'D ' – sjagr
PHPを使用して、配列として文字列を扱うことができます:
$foo = 'bar';
echo $foo[1]; // outputs 'a'
ので
$area['division']
があるため、キーは文字列にすることはできません(
$area[0];
として実行/解析されますそれは本当に配列ではないので、PHPはあなたのdivision
文字列をconvert-to-intの規則で型変換します。 0
)、明らかにダッカの文字D
に評価されます。
存在しないキーに対してtrueを返す場合は、何もできません。ただし、コードに悪影響を与えないようにすることができます。 array_key_exists()を使い、配列要素に対してisset()を実行してください。
編集:実際には、array_key_exists()を使用すると、strlen()のようなものを誤って使用している場合や、array_key_existsがtrueを返した場合に値の型をチェックする必要はありません。
ポイントではなく、単に言ってISSET($アルゴン[「何か」])よりも、ですが実行します。
if(array_key_exists('something',$Ar))
し、必要に応じて、値の長さや種類を確認してください。配列をチェックする必要がある場合は、配列自体のisset()またはis_array()を使用する前に存在している必要があります。
これは、なぜissetが正しく動作しないのかを説明するのではなく、解決策です。
配列要素がインデックス文字列に基づいて設定されているかどうかを確認する必要があります。ここで私はそれを行う可能性があります方法は次のとおりです。
function isset_by_strkey($KeyStr,$Ar)
{
if(array_key_exists($KeyStr,$Ar))
{
if(strlen($Ar[$KeyStr]) > 0 || is_numeric($Ar[$KeyStr] !== FALSE)
{
return TRUE;
}
return FALSE;
}
}
isset_by_strkey('ANY_KEY',$area); // will return false if ANY_KEY is not set in $area array and true if it is.
PHPでリニアアレイにアクセスするための最良の方法は、私はこのバグを持っていた
// string treated as an linear array
$string= "roni" ;
echo $string{0} . $string{1} . $string{2} . $string{3};
// output = roni
- 1. 私は問題に直面
- 2. 私はこの問題に直面していますソース表
- 3. 私は次のような問題に直面しているオブジェクト
- 4. 私は、次のような問題文の直面していたXQuery
- 5. は、私は問題に直面していますMagentoの
- 6. Unity3DでAmazon Rekognitionを使用するには?私はこのような問題に直面しました
- 7. ポップアップ私はここでの問題に直面していますフルナビゲーションバーサイズ
- 8. 私はレール検証の問題に直面しています
- 9. のNeo4jサイファークエリは、私は奇妙な問題に直面してきた
- 10. 私はこのコードで問題に直面していますPHPで
- 11. SLURM Zombiejobのクリーンアップは、私は次のような問題に直面しています
- 12. matplotlibのは、私はmatplotlibの、Tkinterのとmultiprocessing.Processを意味し、問題に直面してきた
- 13. HTML:私は問題に直面しています列
- 14. Webメソッドは、私が問題に直面しています
- 15. 任意のidのようなキーを設定するには?
- 16. データセンターの管理者はどのような問題に直面しますか?
- 17. MPI - 私が直面した問題は、ここで解決されている
- 18. .htaccessファイル - 私は次のような問題に直面していますすべてがID
- 19. チタンAppceleratorのは、私はチタンAppceleratorの持つ大きな問題に直面し、
- 20. htaccessファイルは、直接、任意のより多くの私はgoit
- 21. 直面する問題は、
- 22. メッセージ:オペランドは、私は次のコードで問題に直面
- 23. HTTPのPUTヘッダーは、私は角度に問題に直面していアンギュラ2
- 24. ハッシュテーブルの問題に直面
- 25. Log4Jの問題に直面
- 26. のpythonいるProtobufは、私は奇妙な問題に直面し
- 27. ブートストラップカルーセルは、私はこの奇妙な問題に直面していますSharepointの
- 28. どのようにしてコマンドを提供し、私はイオン実行したときに、私はこの問題に直面している環境のPATH
- 29. アンドロイド - 私は影の色で問題に直面していますshadowColorは
- 30. ドッカー-コンインストール:なしモジュールの名前docker.errors私はインストールしていますこの問題直面しています
です。把握するのに30分かかりました。何が痛い。少なくともPHP 5.5.25で修正されているようですが、 –