0
votes

I'm using CURL with multiple requests which outputs multi-dimensional array. I need to extract 3 of the values from the output (url , content_type, and http_code ) then assign each to a new array separately i.e. $array1=url $array2=content_type $array3=http_code.

I tried to use a for statement to extract each of the values but that didn't work as expected, I got

" Undefined offset:"

Array output

Array ( [http://example1/] => Array ( [url] => http://example1/ [content_type] => [http_code] => 405 [header_size] => 249 [request_size] => 48 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.328 [namelookup_time] => 0 [connect_time] => 0.172 [pretransfer_time] => 0.172 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => 0 [upload_content_length] => -1 [starttransfer_time] => 0.328 [redirect_time] => 0 [redirect_url] => [primary_ip] => 204.79.197.200 [certinfo] => Array ( ) [primary_port] => 80 [local_ip] => 192.168.2.12 [local_port] => 55536 ) [http://example2/] => Array ( [url] => http://example2/ [content_type] => text/html; charset=utf-8 [http_code] => 200 [header_size] => 699 [request_size] => 57 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.453 [namelookup_time] => 0.015 [connect_time] => 0.203 [pretransfer_time] => 0.203 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0.453 [redirect_time] => 0 [redirect_url] => [primary_ip] => 104.16.34.249 [certinfo] => Array ( ) [primary_port] => 80 [local_ip] => 192.168.2.12 [local_port] => 55539 ) )

for($y=0;$y<= (count($array1)-1);$y++){
      echo $array1 [$y][0][1][2];
  }
1
Could you please format the code properly? Additionally, what kind of output is this (commas missing) ? - Jan
That's not my code, its the output of print_r. I have a function that uses multiple curls which output the result above. - user2334436

1 Answers

0
votes

If you want to get this:

$array1 = [
    'content_type' => ['', 'text/html; charset=utf-8']
];

$array2 = [
    'url' => ['http://example1/', 'http://example2/']
];

$array3 = [
    'http_code' => [405, 200]
];

Then try to use foreach loop.

foreach ($output as $url => $values) {
    $array1['content_type'][] = $values['content_type'];
    $array2['url'][] = $values['url'];
    $array3['http_code'][] = $values['http_code'];
}

Read more about foreach loop and Array type. Also in associative arrays you can't get values using numeric indexes, there strings instead of.