Notatki PHP

prywatne zapiski na kamieniu

Mamy kilka tablic z danymi:

 
   $array1 = array("id" => 12, "name" => "Karl");
   $array2 = array("id" => 4, "name" => "Franz");
   $array3 = array("id" => 9, "name" => "Helmut");
   $array4 = array("id" => 10, "name" => "Kurt");
 

Naszym zadaniem jest uzyskanie z tego zbioru danych listy według wybranego klucza, np. wg. klucza name.

 
 
function array_merge_on_key($key, $array1, $array2) {
      $arrays = array_slice(func_get_args(), 1);
      $r = array();
      foreach($arrays as &$a) {
         if(array_key_exists($key, $a)) {
            $r[] = $a[$key];
            continue;
         }
      }
      return $r;
   }
 
 
   $result = array_merge_on_key("name", $array1, $array2, $array3, $array4);
 
var_dump($result); // => tablica 
 
   $c = implode(",", $result); // => łańcuch 
 
var_dump($c);

Otrzymamy najpierw tablicę:

 
array (4)
0 => "Karl" (4)
1 => "Franz" (5)
2 => "Helmut" (6)
3 => "Kurt" (4)

którą zamieniamy na łańcuch poleceniem implode z separatorem jakim jest przecinek:

 
"Karl,Franz,Helmut,Kurt" (22)