Я получаю эту ошибку:
Примечание 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"}
Комментарий от 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,
Других решений пока нет …