2013-12-12 4 views
0
<?php 
echo '<pre>'; 

$pid = '129'; 

$families = array 
(
     "Griffin"=>array 
         (
         "PTY"=>"Peter", 
         "STY"=>"Z", 
         "QTY"=>"A|F" 
        ), 
     "Quagmire"=>array 
         (
         "NTY"=>"Glenn" 
        ), 
     "Brown"=>array 
        (
        "FTY"=>"Cleveland", 
        "OTY"=>"Q|G|T|Y", 
        "PTY"=>"Junior" 
       ) 
); 


function buildid($pid,$key,$val){ 
    $id = $pid.'-'.$key.'-'.$val; 
    // echo '<br>'; 

    if (preg_match("/\|/",$id)){ 
     $id = explode("|",$id); 
     print_r($id); 
    } 
    return; 
} 

    foreach($families as $familieskey=>$familiesvalue){ 
    foreach($familiesvalue as $skey=>$sval){ 
     buildid("$pid","$skey","$sval"); 
    } 
    } 

echo '</pre>'; 
?> 

Выполнить код выше, и вы будете получать все данные, обработанные с $id, но мое требование, один раз, если я нахожу $id с | Я хочу, как показано ниже,PHP элементы выберите массив

Вопрос 2: Я тоже нужны ключи и значения, такие как "STY"=>"Z",, в этом нет |, но я хочу значение. Так можно ли каким-либо образом выбрать такие клавиши, как STY, QTY и OTY и обработать их?

Present выход:

Array 
(
    [0] => 129-QTY-A 
    [1] => F 
) 
Array 
(
    [0] => 129-OTY-Q 
    [1] => G 
    [2] => T 
    [3] => Y 
) 

Ожидаемый результат:

129-QTY-A 
129-QTY-F 
129-OTY-Q 
129-OTY-G 
129-OTY-T 
129-OTY-Y 
+0

вы можете использовать Еогеасп на разнесения и CONCAT существующий текст – Lefsler

+0

Почему вы передаете переменные в 'buildid', как это? 'Buildid ("$ PID", "$ SKEY", "$ SVAL");'. Вы должны сделать это как 'buildid ($ pid, $ skey, $ sval);' –

+0

Есть ли какая-то большая разница с Томасом? - demonofnight - скажите это с кодом – Neocortex

ответ

1

Генерация $ ID после подрыва $ Валу будет решить эту проблему.

function buildid($pid,$key,$val){ 
     if (preg_match("/\|/",$val)){ 
      $val = explode("|",$val); 
      foreach($val as $val1) 
      { 
       $id = $pid.'-'.$key.'-'.$val1; 
       echo "<br>";  
       print_r($id); 
      }  
     } 
    } 
+0

нет необходимости добавлять этот 'return;' –

+0

yes. Я удалил его сейчас :) – Sriraman

+0

Почему 'return' не нужен? – Neocortex

0
function buildid($pid,$key,$val){ 

    if (preg_match("/\|/",$val)){ 
     $id = explode("|",$val); 
     $data = array(); 
     foreach($id as $entity){ 
      $data[] = $pid.'-'.$key.'-'.$entity; 
     } 
     print_r($data); 
    } 
    return; 
} 
+0

Поддерживает ли ваш код также 'case2:' – Neocortex

Смежные вопросы