2010-06-04 3 views
1

J'utilise ci-dessous code pour trouver un tableau à l'intérieur de tableau parent, mais il ne fonctionne pas qui est Refaire vide même si les sorties principales spécifiées dans le tableau parentComment trouver un tableau à partir d'un tableau parent?

$cards_parent = $feedData['BetradarLivescoreData']['Sport']['Category']['Tournament']['Match']; 
$cards = array(); 

foreach($cards_parent as $key => $card) 
{ 
    if ($key === 'Cards') 
    { 
     $cards[] = $cards_parent[$key]; 
     break; 
    } 
} 

Connaissez-vous une fonction de tableau qui recherche des parents tableau pour la clé spécifiée et si trouvé, il va créer un tableau à partir de cette clé?

+0

Il est difficile de dire de votre exemple ce que la question est. Donne un exemple de ce à quoi '$ cards_parent' pourrait ressembler. Si vous voulez dire que la clé est à une profondeur inconnue dans le tableau, regardez dans l'itération récursive. – deceze

+1

Pourquoi '$ cards' est-il un tableau? Il semble qu'il ne contiendra qu'une seule valeur de toute façon ... –

Répondre

0

Pourriez-vous s'il vous plaît mettre un print_r($feedData)? J'ai couru le code ci-dessous

<?php 
$feedData = array('BetradarLivescoreData' => array('Sport' => array('Category' => array('Tournament' => array('Match' => array('Cards' => array('hellow','jwalk'))))))); 
$cards_parent = $feedData['BetradarLivescoreData']['Sport']['Category']['Tournament']['Match']; 
$cards = array(); 

foreach($cards_parent as $key => $card) 
{ 
    if ($key === 'Cards') 
    { 
     $cards[] = $card; 
     break; 
    } 
} 
print_r($cards); 

Et il est revenu un tableau contenant:

Array ([0] => Array ([0] => hellow [1] => jwalk))

Donc, votre code est correct, il se peut que votre tableau $ feedData ne l'est pas.

1

ici vous pouvez utiliser récursion:

function Recursor($arr) 
{ 
if(is_array($arr)) 
{ 
    foreach($arr as $k=>$v) 
    { 
    if($k == 'Cards') 
    { 
    $_GLOBAL['cards'][] = $card; 
    } else { 
    Recursor($arr[$k]); 
    } 
    } 
} 
} 

$cards_parent = $feedData['BetradarLivescoreData']['Sport']['Category']['Tournament']['Match']; 
$_GLOBAL['cards'] = array(); 
Recursor($cards_parent); 
+0

Uuuuh, '$ _GLOBAL' ...> _ deceze

+0

Non, je ne devrais pas. J'ai besoin de passer tout le tableau. Si return - récursion sera interrompue. $ _Global est là pour rappeler les valeurs trouvées et aller à la fin du tableau. – GOsha

+0

Il est parfaitement possible de retourner et de fusionner des valeurs au cours d'appels récursifs. Toutes vos invocations récursives retournent implicitement de toute façon. Au moins, utilisez une variable statique si vous le devez. – deceze

Questions connexes