2015-09-01 3 views
1

Я пробивал себе голову последние несколько дней, потому что я не смог создать решение для своей проблемы.Разделение/подстановка массива - PHP

У меня есть массив, который выглядит следующим образом:

[0] => {"count": 1038, "previous": null, "results": [{"data_source": "f31904c94a72490e8fa5750399a14e44", "uuid": "acbb6a8790604ac9916772f51729e69a", "reference": "[email protected]", "value": "0.0000", "member": "a7cab5fa045d44beb72da3ea26e6a49c", "HPSalesBudget": "1.00", "team": null, "date": "2015-08-28T00:00:00"} 
[1] => {"data_source": "f31904c94a72490e8fa5750399a14e44", "uuid": "5ba77c689aba48f8ab845c9578b96d1d", "reference": "[email protected]", "value": "0.0000", "member": "477039a270d841aaa87a5578ee034d60", "HPSalesBudget": "1.00", "team": null, "date": "2015-08-28T00:00:00"} 

То, что я хочу, чтобы удалить первую часть массива

[0] => {"count": 1038, "previous": null, "results": 

И сделать и массив, который выглядит следующим образом:

Array 
(
[0] => Array 
(
[data_source] => f31904c94a72490e8fa5750399a14e44 
[uuid] => acbb6a8790604ac9916772f51729e69a 
[reference] => [email protected] 
[value] => 0.0000 
[member] => a7cab5fa045d44beb72da3ea26e6a49c 
[HPSalesBudget] => 1.00 
[team] => null 
[date] => 2015-08-28T00:00:00 
) 

[1] => Array 
(
[data_source] => f31904c94a72490e8fa5750399a14e44 
[uuid] => acbb6a8790604ac9916772f51729e69a 
[reference] => [email protected] 
[value] => 0.0000 
[member] => a7cab5fa045d44beb72da3ea26e6a49c 
[HPSalesBudget] => 1.00 
[team] => null 
[date] => 2015-08-28T00:00:00 
) 

Единственная причина, по которой мой массив выглядит так, потому что это формат, в котором я получаю данные.

Я попытался решить проблему, но не повезло.

У кого-нибудь есть решение для моей проблемы?

+0

Является ли этот массив 'array' type или' string'? – kezi

+0

Я думаю, что что-то не так в вашей строке массива, потому что после этой скобки должно быть запятая в конце первой строки или, по крайней мере, еще одна скобка, чтобы закрыть ее ... – kezi

ответ

0

Сплит ваши данные в линии с чем-то вроде explode("\n", $data);

Затем обрабатывают данные построчно, раздеть первые 7 символов каждой строки, так что ваши данные только это:

{"count": 1038, "previous": null, "results": [{"data_source": "f31904c94a72490e8fa5750399a14e44", "uuid": "acbb6a8790604ac9916772f51729e69a", "reference": "[email protected]", "value": "0.0000", "member": "a7cab5fa045d44beb72da3ea26e6a49c", "HPSalesBudget": "1.00", "team": null, "date": "2015-08-28T00:00:00"} 

Тогда использование json_decode на каждую строку.

Отсюда легко получить данные в формате вам необходимо:

$result = array(); 
$result[] = $json['results']; 

Я предполагаю, что код должен выглядеть следующим образом:

$result = array(); 
$lines = explode("\n", $data); 
foreach ($lines as $line) { 
    $line = substr($line, 7); 
    $json = json_decode($line, true); 
    $result[] = $json['results']; 
} 
0

Попробуйте это:

 $result = json_decode((your_json), true); //decode your json to array 

    $newArr = []; 
    foreach($result['results'] as $key => $val) { 
     $newArr[] = ['data_source'=> $val['data_source'] 
        'uuid' => $val['uuid'], 
        'reference' => $val['reference'], 
        'value' => $val['value'], 
        'member' => $val['member'], 
        'HPSalesBudget' => $val['HPSalesBudget'], 
        'team' => $val['team'], 
        'date'=> $val['date']] ; 
    } 
    print_r($newArr); 
+0

Спасибо за ваш ответ. Не так ли в Json, как должна выглядеть моя строка json? –

+0

Это на ваш вопрос. Это массив типа json. Поэтому, если вы хотите получить только массивы. Декодируйте это. – aldrin27

0

Должно быть так просто:

$myarray[0] = $myarray[0]["results"]; 
Смежные вопросы