質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

2回答

3988閲覧

array_key_exists でキーに変数を設定すると警告がでます

makosama4493

総合スコア21

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

1クリップ

投稿2019/08/16 08:21

キーに変数を使用すると、警告:Warning: array_key_exists(): The first argument should be either a string or an an integer が表示されます。

$name = "mike";
if array_key_exists($name,$rule18)){~}

キーに直接 "mike" を設定すると問題ありません。

とりあえず動いているので無視しても構わないのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

キーに変数を使用すると、警告:Warning: array_key_exists(): The first argument should be either a string or an an integer が表示されます。

php

1<?php 2 3ini_set('display_errors', 1); 4error_reporting(E_ALL); 5 6$name = 'a'; 7 8$array = [ 9 'a' => 1, 10 'b' => 2 11]; 12 13if (array_key_exists($name, $array)) { 14 echo 'true' . PHP_EOL; 15} 16 17// $ php index.php 18// true 19

そのような事実が確認できません。

投稿2019/08/16 08:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

if array_key_exists($name,$rule18)){~}

そもそもif文の構文ミスです。

提示のコードだけだと$rule18が未定義ですが、それだと出るエラーは
PHP Notice: Undefined variable: rule18
PHP Warning: array_key_exists() expects parameter 2 to be array, null givenですしね。

The first argument should be either a string or an an integer

Google翻訳:最初の引数は文字列または整数のいずれかでなければなりません

なので、実は$nameが配列になってたとかでは?

php

1<?php 2$rule18 = []; 3$name = []; 4if(array_key_exists($name,$rule18)){ 5 6} 7//PHP Warning: array_key_exists(): The first argument should be either a string or an integer

とりあえず動いているので無視しても構わないのでしょうか?

E_WARNING 実行時の警告 (致命的なエラーではない)とはいえ、
放っておいて良いものではありません。
「とりあえず現在の実行に問題がない」だけであり、場合によっては「致命的なエラー」になる可能性を秘めています。
またプログラミングにおいては「とりあえず動いているから」と目の前の問題をスルーするのは問題自体を大きくしてしまう因子になります。
個人的にはエラーレベルとしては低いNoticeですらあってはいけないと思っています。

無視せず、またその場限りの対応でごまかすことなく確実に潰しましょう。

投稿2019/08/16 08:34

編集2019/08/16 08:39
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

makosama4493

2019/08/17 00:54

説明が簡略すぎました。一晩考えた結果isset関数で解決できました。”エラーレベルに関わらず確実に対応せよ!”とのお言葉重く受け止めております。ありがとうございました。
m.ts10806

2019/08/17 01:18

今回issetを使うのは苦肉の策でしかないように思いますけど…。 ロジックから考え直したほうが良いかもしれません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問