根据数组的数量循环遍历数组和输出链接

use*_*ser 2 php arrays foreach loops associative-array

我目前有一个数组如下:

   Array ( 
    [0] => Array ( [id] => 34 [another_id] => 2805 [third_id] => 1 ) 
    [1] => Array ( [id] => 35 [another_id] => 2805 [third_id] => 1 ) 
    [2] => Array ( [id] => 36 [another_id] => 2805 [third_id] => 1 ) 
    [3] => Array ( [id] => 37 [another_id] => 2805 [third_id] => 1 ) 
    [4] => Array ( [id] => 38 [another_id] => 2805 [third_id] => 1 ) 
    [5] => Array ( [id] => 39 [another_id] => 2805 [third_id] => 1 ) 
    [6] => Array ( [id] => 40 [another_id] => 2805 [third_id] => 2 ) 
    [7] => Array ( [id] => 41 [another_id] => 2805 [third_id] => 2 )
    [8] => Array ( [id] => 42 [another_id] => 2805 [third_id] => 2 ) 
    [9] => Array ( [id] => 43 [another_id] => 2805 [third_id] => 2 )
 )
Run Code Online (Sandbox Code Playgroud)

我需要做的是最终打印9个链接(因为有9个数组元素),但基于数组中的键.例如:

www.samplelink/link/id/another_id/third_id
Run Code Online (Sandbox Code Playgroud)

但我似乎无法让循环正确.到目前为止我所拥有的是:

foreach ($array as $arr) {
  foreach ( $arr as $key => $value ) {
    echo "<a>www.samplelink/link/".$key[$value]."</a>";
  }
}
Run Code Online (Sandbox Code Playgroud)

但这并不是我打印出钥匙所需要的.谁知道我能做什么?

Dan*_*elo 6

 foreach ($array as $innerArray) {
  echo "<a>www.samplelink/link/".$innerArray['id']."/".$innerArray['another_id']."/".$innerArray['third_id']."</a>";
 }
Run Code Online (Sandbox Code Playgroud)

undefined index如果密钥不存在,它可能会出错,因此您也可以执行以下操作:

foreach ($array as $innerArray) {
    $finalLink = array_key_exists('id',$innerArray)?$innerArray['id']:"";
    $finalLink.= "/".array_key_exists('another_id',$innerArray)?$innerArray['another_id']:"";
    $finalLink.= "/".array_key_exists('third_id',$innerArray)?$innerArray['third_id']:"";
    echo "<a>www.samplelink/link/$finalLink</a>";
}
Run Code Online (Sandbox Code Playgroud)


u_m*_*der 5

如果子数组中的元素总是以相同的顺序排列,那么您可以只使用implode它们:

foreach ($array as $arr) {
    echo "<a>www.samplelink/link/".implode('/', $arr)."</a>";
}
Run Code Online (Sandbox Code Playgroud)

否则你应该明确指出哪个索引在哪个位置,就像@Danyal Sandeelo的回答一样.