0

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];
  }
2
  • Could you please format the code properly? Additionally, what kind of output is this (commas missing) ? Commented Dec 21, 2015 at 18:06
  • That's not my code, its the output of print_r. I have a function that uses multiple curls which output the result above. Commented Dec 21, 2015 at 18:21

1 Answer 1

0

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.

Sign up to request clarification or add additional context in comments.

1 Comment

That worked! Thanks. I've never used multi-dimensional/associative arrays array before so it was a bit of a challenge. I need to learn more about it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.