如何对对象数组使用爆炸
how to use explode for an array of objects
我有一个这样的数组:
array(5) {
["code"]=>
int(1)
["messageError"]=>
string(27) "La typologie est incorrecte"
["model"]=>
string(3) "lot"
["grp_regles"]=>
array(1) {
[0]=>
array(1) {
[0]=>
array(3) {
["champ"]=>
string(21) "lot_surface_habitable"
["comparaison"]=>
string(7) "between"
["valeurAttendue"]=>
array(2) {
[0]=>
int(16)
[1]=>
int(40)
}
}
}
}
["prerequis"]=>
array(2) {
[0]=>
array(3) {
["champ"]=>
string(6) "typ_id"
["comparaison"]=>
string(1) "="
["valeurAttendue"]=>
int(1)
}
[1]=>
array(3) {
["champ"]=>
string(22) "tranche.fus.fup.fup_id"
["comparaison"]=>
string(1) "="
["valeurAttendue"]=>
int(1)
}
}
}
我想在“先决条件”中做一个foreach:
$modelRetrieve = $this->retrieveModel($model);
$modelFind = $modelRetrieve::find($id);
$arrayError=[];
$query = '';
$path = storage_path() . "/json/controle.json";
$json = file_get_contents($path);
foreach (json_decode($json,true) as $key => $value) {
$test = true;
var_dump($value);
if($value['model'] === $model ){
foreach ($value['prerequis'] as $key => $value2) {
if( $test && $modelFind[$value2['champ']] == (int)$value2["valeurAttendue"] )
{
$test = true;
}
}
}
}
我需要在第二个 foreach 中使用 $value2['champ']
,其中 $value2['champ']
是“tranche.fus.fup_id。所以我需要分解它以获得 ['tranche']['fus']['fup_id']
。
如何使用 explode 呢?
谢谢大家:)
要嵌套字符串的 $segment
s 从结果的最里面的项目开始,我们必须 array_reverse()
$segment
s 这样我们就可以遍历它并包装每个在下一次迭代中使用另一个数组级别迭代的结果,直到我们遍历整个 $segment
s 数组。
$exploded = array_reduce(array_reverse(explode('.', $value2['champ'])), function($res, $segment) {
return [ $segment => $res ];
}, []);
你可以使用 laravel data_get
助手:
data_get($value2, $value2['champ'])
我有一个这样的数组:
array(5) {
["code"]=>
int(1)
["messageError"]=>
string(27) "La typologie est incorrecte"
["model"]=>
string(3) "lot"
["grp_regles"]=>
array(1) {
[0]=>
array(1) {
[0]=>
array(3) {
["champ"]=>
string(21) "lot_surface_habitable"
["comparaison"]=>
string(7) "between"
["valeurAttendue"]=>
array(2) {
[0]=>
int(16)
[1]=>
int(40)
}
}
}
}
["prerequis"]=>
array(2) {
[0]=>
array(3) {
["champ"]=>
string(6) "typ_id"
["comparaison"]=>
string(1) "="
["valeurAttendue"]=>
int(1)
}
[1]=>
array(3) {
["champ"]=>
string(22) "tranche.fus.fup.fup_id"
["comparaison"]=>
string(1) "="
["valeurAttendue"]=>
int(1)
}
}
}
我想在“先决条件”中做一个foreach:
$modelRetrieve = $this->retrieveModel($model);
$modelFind = $modelRetrieve::find($id);
$arrayError=[];
$query = '';
$path = storage_path() . "/json/controle.json";
$json = file_get_contents($path);
foreach (json_decode($json,true) as $key => $value) {
$test = true;
var_dump($value);
if($value['model'] === $model ){
foreach ($value['prerequis'] as $key => $value2) {
if( $test && $modelFind[$value2['champ']] == (int)$value2["valeurAttendue"] )
{
$test = true;
}
}
}
}
我需要在第二个 foreach 中使用 $value2['champ']
,其中 $value2['champ']
是“tranche.fus.fup_id。所以我需要分解它以获得 ['tranche']['fus']['fup_id']
。
如何使用 explode 呢?
谢谢大家:)
要嵌套字符串的 $segment
s 从结果的最里面的项目开始,我们必须 array_reverse()
$segment
s 这样我们就可以遍历它并包装每个在下一次迭代中使用另一个数组级别迭代的结果,直到我们遍历整个 $segment
s 数组。
$exploded = array_reduce(array_reverse(explode('.', $value2['champ'])), function($res, $segment) {
return [ $segment => $res ];
}, []);
你可以使用 laravel data_get
助手:
data_get($value2, $value2['champ'])