#php #arrays #api
#php #массивы #API
Вопрос:
Я работаю над пользовательской сборкой проекта с использованием PHP Laravel. Я захватил некоторые входные данные из формы и хочу сохранить их в API. В основном API принимает массив объектов. Я пытаюсь сохранить свои входные данные, но он сохраняет не все из них, а только первый.
Что требуется для API
[
{
"dependant_name": "Dependant 1 ",
"relationship": "Spouse",
"date_of_birth": "1999-02-26"
},
{
"dependant_name": "Dependant 2",
"relationship": "Child",
"date_of_birth": "2008-11-21"
},
{
"dependant_name": "Dependant 3",
"relationship": "Child",
"date_of_birth": "2015-10-17"
}
]
Мои входные данные после сбора из формы
$fn = [
"fName1" => "Martoo",
"fName2" => "dsjksdksd",
"sName1" => "Njogu",
"sName2" => "jkdsjsdk",
"dob" => "07-04-2001",
"dob1" => "06-04-2001",
"relation1" => "Wife",
"relation2" => "Son"
];
Мой код для проверки, существует ли ключ
//If fName exist create only one array collection to suit API
if(array_key_exists("fName1" , $fn)){
$a=[
'dependant_name' => $fn['fName1'] . " " . $fn['sName1'],
'relationship' => $fn['relation1'],
'date_of_birth' => $fn['dob']
];
}
//If fName and fName2 exists create 2 array collections to suit API
if(array_key_exists("fName1" , $fn) amp;amp; array_key_exists("fName2" , $fn)){
$a=[
'dependant_name' => $fn['fName1'] . " " . $fn['sName1'],
'relationship' => $fn['relation1'],
'date_of_birth' => $fn['dob'],
'dependant_name' => $fn['fName2'] . " " . $fn['sName2'],
'relationship' => $fn['relation2'],
'date_of_birth' => $fn['dob1']
];
}
dd($a);
После dd($ a) я получаю только 1-ю коллекцию массивов
Ответ №1:
Вам необходимо изменить структуру $a
следующим образом
if (array_key_exists("fName1", $fn)) {
$a[] = [ // you were replacing $a every time here
'dependant_name' => $fn['fName1'] . " " . $fn['sName1'],
'relationship' => $fn['relation1'],
'date_of_birth' => $fn['dob'],
];
}
//If fName and fName2 exists create 2 array collections to suit API
if (array_key_exists("fName1", $fn) amp;amp; array_key_exists("fName2", $fn)) {
$a[] = [ // you were replacing $a every time here
'dependant_name' => $fn['fName1'] . " " . $fn['sName1'],
'relationship' => $fn['relation1'],
'date_of_birth' => $fn['dob'],
'dependant_name' => $fn['fName2'] . " " . $fn['sName2'],
'relationship' => $fn['relation2'],
'date_of_birth' => $fn['dob1'],
];
}
dd($a);
Ответ №2:
Вам нужно использовать array для хранения выходных данных. Вы можете использовать приведенный ниже код.
$fn = [
"fName1" => "Martoo",
"fName2" => "dsjksdksd",
"sName1" => "Njogu",
"sName2" => "jkdsjsdk",
"dob" => "07-04-2001",
"dob1" => "06-04-2001",
"relation1" => "Wife",
"relation2" => "Son"
];
$a = array();
//If fName exist create only one array collection to suit API
if (array_key_exists("fName1", $fn)) {
$a[] = array(
'dependant_name' => $fn['fName1'] . " " . $fn['sName1'],
'relationship' => $fn['relation1'],
'date_of_birth' => $fn['dob']
);
}
//If fName and fName2 exists create 2 array collections to suit API
if (array_key_exists("fName1", $fn) amp;amp; array_key_exists("fName2", $fn)) {
$a[] = array(
'dependant_name' => $fn['fName1'] . " " . $fn['sName1'],
'relationship' => $fn['relation1'],
'date_of_birth' => $fn['dob']
);
$a[] = array('dependant_name' => $fn['fName2'] . " " . $fn['sName2'],
'relationship' => $fn['relation2'],
'date_of_birth' => $fn['dob1']
);
}
echo "<pre>";
print_r($a);