2010-06-21 2 views
1

У меня есть массив, который выглядит следующим образом: я хочу найти saleref и получить его, чтобы дать мне ключ в PHP, я пробовал использовать array_search, но ничего не получил. В качестве альтернативы, я просто хочу отображать другие значения в том же массиве, что и поиск salesref, если есть лучший способ.PHP поиск массив return key

Array 
    (
     [xml] => Array 
      (
       [sale] => Array 
        (
         [0] => Array 
          (
           [saleref] => 305531 
           [saleline] => 1 
           [date] => 
           [team] => WH 
           [manifest] =>  0 
           [qty] =>  1 
           [order_status] => 
          ) 

         [141] => Array 
          (
           [saleref] => 306062 
           [saleline] => 1 
           [date] => 
           [team] => 
           [manifest] =>  0 
           [qty] =>  1 
           [order_status] => RECEIVED 
          ) 

         [1] => Array 
          (
           [saleref] => 306062 
           [saleline] => 2 
           [date] => 
           [team] => WH 
           [manifest] =>  0 
           [qty] =>  1 
           [order_status] => 
          ) 
+0

это выглядит, как вы пытаетесь найти список XML правильно? – MANCHUCK

+0

он был преобразован в массив –

ответ

2
<?php 
function searchSale($needle) 
{ 
    foreach ($data['xml']['sale'] as $id => $sale) 
    { 
     if ($sale->saleref == $needle) 
     { 
      return $id; 
     } 
    } 
    return null; 
} 
?> 
+0

должен быть '$ sale ['saleref']', поскольку они все массивы, а не объекты. – nickf

+0

ах поблагодарить вас nickf и спасибо sjoerd за решение –

0
function findkey($val, &$array) 
{ 
    $keys=array(); 
    foreach ($array as $key=$try) { 
    if ($try===$val) { 
     $keys[]=$key; 
    } else if (is_array($try)) { 
     $contained=findkey($val, $try); 
     if (count($contained)) { 
      $keys[]=$contained; 
     } 
    } 
    } 
    return $keys; 
} 

C.