dqjfw40446
2015-12-21 17:55
浏览 42
已采纳

从多维数组php中提取值

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条回答 默认 最新

  • duanjianhe1388 2015-12-21 18:30
    已采纳

    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.

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题