Angular 6 и PHP зацикливаются на массиве json, отправленном через HttPClient, давая неверный аргумент в цикле foreach

Я отправляю массив с другими данными, используя HttpClient угловой 6.

И как уже упоминалось в этом посте на github, отправка массивов с помощью HttpClient по-прежнему недоступна, поэтому у меня возникла проблема с чтением массивов при получении в PHP и var_dump показал мне нулевые объекты.

Я нашел решение, преобразовав массив в JSON с помощью json.stringify(array) и это сработало, так как полученный массив правильно отображается в var_dump:

this.auth.saveUnitData(
unit_type,
location_id,
user,
number_of,
status,
add_date,
JSON.stringify(arrayOfActualities))
.subscribe(
(data)=>{
console.log(data);
},
(error)=>{
console.log(error);
}
)

var_dump() результат:

(
[unit_type] => 1

[location_id] => 1

[user] => 1

[number_of] => 2

[status] => Active

[add_date] => 2018-09-13

[arrayOfActualities] =>

[{"legalId":"","protectionId":"1","situationId":"","addDate":"2018-09-13"}]

)

В коде PHP, а иногда внешний ключ может быть нулевым, поскольку одна из фактических данных, отправляемых через массив, не существует, я написал следующий скрипт:

$arrayOfActualities = json_encode($arrayOfActualities);
if(sizeof($arrayOfActualities)>0)
{
foreach($arrayOfActualities as $array)
{
if($array['situationId']==="")
{
$situation_id=null;
}
else{
$situation_id = $array['situationId'];
}
if($array['legalId']==="")
{
$legal_id=null;
}
else{
$legal_id = $array['legalId'];
}
if($array['protectionId']==="")
{
$protection_id=null;
}
else{
$protection_id = $array['protectionId'];
}

$status = "Active";

try{
$sqlActualities = "INSERT into unit_situation_legal_protection(
unit_situation_legal_protection_status,
unit_situation_legal_protection_date_added,
legal_id, situation_id, protection_id, user_id)
VALUES(:actStatus, :dateAdded, :legal,
:situation, :protection, :userId)";
$sqlActExec = $this->conn->prepare($sqlActualities);
$sqlActExec->bindValue('actStatus', $status);
$sqlActExec->bindValue('dateAdded', $dateAdded);
$sqlActExec->bindValue('legal', $legal_id);
$sqlActExec->bindValue('situation', $situation_id);
$sqlActExec->bindValue('protection', $protection_id);
$sqlActExec->bindValue('userId', $user_id);
$sqlActExec->execute();

return "success";
}
catch(PDOException $e)
{
return $e->getMessage();
}
}
}

Проблема в том, что в базу данных ничего не добавлено, и она показывает следующую ошибку:

Предупреждение: неверный аргумент предоставлен для foreach ()

Итак, если я изменился на:

foreach (json_decode ($ arrayOfActualities) как $ array)

Я получил следующую ошибку:

Неверное значение ‘[‘

Я думаю, что это ошибка, потому что массив преобразован в JSON и [ был добавлен перед каждой строкой json, поэтому php подумал, что это значение или что-то в этом роде.

1

Решение

Задача ещё не решена.

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

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

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