Я отправляю массив с другими данными, используя 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 подумал, что это значение или что-то в этом роде.
Задача ещё не решена.
Других решений пока нет …