0

forループ内で、次のコードを使用して、ある日付形式から別の日付形式に変換しています。

339: $newdate = date_create_from_format('j-M g:i A', $moneyline[$i][date]);
340: echo date_format($newdate, 'Y-m-d');

var_dump$ moneyline [$ i] [date]に よると、私の変数は文字列のようです。string(15) "18-Jun 7:05 PM"

しかし、$newdateコンストラクターの引数として変数を使用する$newdateと、vardumpに従ってブール値が作成されます。 bool(false)

つまり、340行目を実行しようとすると、次のエラーが発生します。

Warning: date_format() expects parameter 1 to be DateTime, boolean given in /home/andrewmin/andrewmin.com/share/scraping/betting_scraping.php on line 340

ただし、339行目を次のように変更すると次のようになります。

339: $newdate = date_create_from_format('j-M g:i A', '18-Jun 7:05 PM');

完璧に印刷されます。誰かがその理由について何か考えがありますか?

編集:申し訳ありませんが、それはforeachではなく、次の目的のためです:

for ($i = 2; $i < $array_length; $i++) {
4

1 に答える 1

0

確かに私がこのコードを使ってテストするとき:

$moneyline = array(
  13 => array(
    'date' => "18-Jun 7:05 PM"
  )
);
$i = 13;
$newdate = date_create_from_format('j-M g:i A', $moneyline[$i][date]);
echo date_format($newdate, 'Y-m-d');

私はこの結果を得る:

**Notice:**  Use of undefined constant date - assumed 'date' in J:\www\test\datetime.php on line 89

2012-06-18

'date'配列インデックスを適切に引用することで、通知を取り除くことができます。

私の推測では、$moneyline配列に指定した日付形式に準拠していない文字列が含まれています(たとえば、空の文字列)。この場合、date_create_from_formatは失敗し、を返しfalseます。

疑わしい場合は、関連するコードのより完全なコピーと、コードが失敗する配列を投稿してください。

于 2012-06-18T16:36:55.253 に答える