is there clean way combine 2 php arrays conditionally? following json-response both arrays separately:
1st array:
[ { "field": { "id": 20, "name": "erfolge", "field-id": "erfolge", "type": "textarea" } }, { "field": { "id": 29, "name": "sprachen", "field-id": "sprachen", "type": "text" } } ]
2nd array:
[ { "field": { "id": 20, "name": "erfolge", "field-id": "erfolge", "type": "textarea" }, "value": "new entry" }, { "field": { "id": 4, "name": "trikotnummer", "field-id": "trikotnummer", "type": "number" }, "value": "test" }, { "field": { "id": 29, "name": "sprachen", "field-id": "sprachen", "type": "text" }, "value": "text" } ]
i want following target output:
[ { "field": { "id": 20, "name": "erfolge", "field-id": "erfolge", "type": "textarea" }, value: "new entry" }, { "field": { "id": 29, "name": "sprachen", "field-id": "sprachen", "type": "text" }, value: "text" } ]
that means must add values if field exists in 1st array. current solution gives me fields without correct mapping:
$fielddata = array(); foreach ($fields $field) { $fielddata[]['fields'] = $field->getarraycopy(); } // values $values = $user->getprofilefieldvalue(); $fieldvalue = array(); foreach ($values $value) { $fieldvalue[] = $value->getarraycopy(); } $result = array_merge($fielddata, $fieldvalue);
should use function array_walk?
this expensive way it, searches second array looking element matching id first array.
$result = array(); foreach ($first $e1) { $id = $e1['field']['id']; foreach ($secondarray $e2) { if ($e2['field']['id'] == $id) { $e1['value'] = $e2['value']; break; } } $result[] = $e1; }
if second array large, can optimize first creating associative array key ids second array , values values.
Comments
Post a Comment