[解決済み] このIllegal String Offsetを修正するにはどうすればよいですか?
質問事項
このエラーが表示されます "警告。/home/mysite/public_html/wp-content/themes/evento/lib/php/extra.class.php on line 32" にある不正な文字列オフセット 'type' です。
しかし、私はまだPHPがそれほど得意ではないので、どなたかこの部分を書き直してエラーをなくすのを手伝っていただけませんか?ありがとうございます。(エラーは32行目から始まっており、これは以下のif文の始まりです)
以下はそのコードです。
/* new version */
function get_attachment_struct( $inputs ){
$attach = array();
if( $inputs['type'] == 'attach' ){
$name = $inputs['name'];
$attach = array(
0 => array(
'name' => $name,
'type' => 'text',
'label' => 'Attachment URL',
'lvisible' => false,
'upload' => true,
),
1 => array(
'name' => $name .'_id',
'type' => 'hidden',
'upload' => true
),
);
if( isset( $inputs[ 'classes' ] ) ){
$attach[0]['classes'] = $inputs[ 'classes' ];
$attach[1]['classes'] = $inputs[ 'classes' ] . '_id';
}
}
return $attach;
}
/* new version */
解決方法は?
if ($inputs['type'] == 'attach') {
このコードは有効ですが、関数パラメータである
$inputs
を配列で指定します。を使用すると、quot;Illegal string offset"の警告が表示されます。
$inputs['type']
は、この関数に配列ではなく文字列が渡されることを意味します。(そして、文字列のオフセットが数値であることから
'type'
は適切ではありません)。
つまり理論的には、コードの呼び出し側が正しいパラメータを提供していないことに問題があるのです。
しかし、この警告メッセージはPHP 5.4で新たに表示されるようになったものです。古いバージョンでは、このような場合、警告は表示されませんでした。古いバージョンでは、この現象が発生しても警告は表示されず、黙って
'type'
を
0
で、その文字列の0文字目(最初の文字)を取得しようとします。つまり、もしこのコードが動作することになっていたとしたら、それはこのように文字列を悪用しても PHP 5.3 以下では苦情が出ないからです。(多くの古い PHP コードが、アップグレード後にこの問題を経験しました)。
をデバッグしたくなるかもしれません。
なぜ
を実行することで、関数に文字列が渡され、その文字列がどのような値であるかを調べることができます。
var_dump($inputs);
を関数内で使用します。しかし、PHP 5.3 のように動作させるために警告を黙らせるだけなら、この行を次のように変更します。
if (is_array($inputs) && $inputs['type'] == 'attach') {
関連
-
[解決済み] [Solved] Fatal error: メンバ関数bind_param()のbooleanに対する呼び出し [重複] [重複
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み] ある文字列が特定の単語を含んでいるかどうかを確認するにはどうすればよいですか?
-
[解決済み] どのような場合に '$this' よりも 'self' を使うべきですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】接続の取得に失敗しました: php_network_getaddresses: getaddrinfo failed: 名前またはサービスが不明
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】メンバ関数をnullで呼び出す?
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み] Uncaught SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】MySQLのカラム数が1行目の値数と一致しない【非公開
-
[解決済み】phpのシンタックスエラー、予期しないT_IFエラーを修正する方法は?[クローズド]。
-
[解決済み] $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて