При назначении массива: & quot; Примечание PHP: встречается некорректно сформированное числовое значение & quot;

Я получаю эту ошибку:

Примечание PHP: неправильно сформированное числовое значение, встречающееся в
[…] / model.php в строке 205

В этом коде PHP:

   [...]

echo 'var_dump($i):' . "\n";
var_dump($i);

echo 'var_dump($wawiData[$i][\'date\']):' . "\n";
var_dump($wawiData[$i]['date']);

$accRecords[] = array(
'date' => $wawiData[$i]['date'],  # this is line 205
'description' => $wawiData[$i]['inv-recipient'],
'field1' => $wawiData[$i]['inv-no'],
'account' => $account,
'contra-account' => $wawiData[$i]['client-no'],
'amount' => $wawiData[$i]['amount'] * -1,  # this is line 210
'country-code' => $country,
'rec-type' => $wawiData[$i]['rec-type'],
'company' => $wawiData[$i]['company'],
'name' => $wawiData[$i]['name'],
'freeze' => 0,
'inv-link' => 'BEDI "' . $guids[$wawiData[$i]['inv-no']] . '"'
);
}
}
return $accRecords;
}  # end of method

Вывод на консоль:

var_dump($i):
int(0)
var_dump($wawiData[$i]['date']):
string(10) "08.01.2018"PHP Notice:  A non well formed numeric value encountered in [...]/model.php on line 205

Я нашел много сообщений об этом PHP Уведомление, но все было про использование кода date() и другие функции с искаженными параметрами.

Тем не менее, я не могу понять, как это связано со мной, просто назначив отлично штраф string для array используя прекрасно int в качестве индекса.

Может кто-нибудь объяснить мне, что вызывает PHP Уведомление? (строка 205 отмечена в коде выше)

Спасибо!

Постскриптум

var_dump($wawiData[$i]):
array(10) {
["inv-no"]=>
string(11) "RE2018-6677"["date"]=>
string(10) "08.01.2018"["amount"]=>
string(5) "93,79"["client-no"]=>
string(5) "12881"["inv-recipient"]=>
string(27) "(...)"["company"]=>
string(27) "(...)"["name"]=>
string(13) "(...)"["rec-type"]=>
int(2)
["country"]=>
string(11) "Deutschland"["country-code"]=>
string(2) "DE"}

0

Решение

Комментарий от MacBooc:
$wawiData[$i]['amount'] * -1 с 93,79 не может быть проблемой? попробуйте заменить ваш , от .Я уверен, что ваша ошибка уйдет

Слава @MacBooc за этот ответ!

Разработка:

PHP Уведомление срабатывает, потому что я пытался умножить значение 93,79 от -1, Это вызывает уведомление, так как PHP ожидает . (точка) в качестве десятичного разделителя и, следовательно, не любит , (запятая — a.k.a. немецкий десятичный разделитель).

Дополнительная путаница была вызвана тем фактом, что PHP утверждал, что уведомление было вызвано в строке 205, хотя на самом деле оно было вызвано в строке 210.

Я добавил следующие строки перед строкой 204:

# remove possible thousands separators
$amount = str_replace('.', '', $wawiData[$i]['amount']);
# change decimal separator from ',' to '.' and mulitply by -1
$amount = str_replace(',', '.', $amount) * -1;
# change decimal separator back from '.' to ','
$amount = str_replace('.', ',', $amount);

Мой новый код для строки 210:

'amount' => $amount,
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]