2010-06-17 5 views
3
array(
    [0] 
     name => 'joe' 
     size => 'large' 
    [1] 
     name => 'bill' 
     size => 'small' 

)액세스 배열 요소

나는 내가 처음 통해 반복하고있어, 내가 두꺼운되고있어,하지만 난 키 중 하나의 값을 알고있는 경우 배열 요소의 속성을 얻을 생각 올바른 요소를 찾을 수있는 요소.

foreach($array as $item){ 
    if ($item['name'] == 'joe'){ 
     #operations on $item 
    } 
} 

나는 이것이 매우 좋지는 않지만 매우 새로운 것으로 알고 있으며 값으로 직접이 요소에 액세스 할 방법을 찾고 있습니다. 아니면 열쇠가 필요합니까?

감사합니다, 브랜든

답변

2

을 시도해보십시오

<?php 
$arr = array(
array('name'=>'joe'), 
array('name'=>'bob')); 
var_dump(array_search(array('name'=>'bob'),$arr)); 
//works: int(1) 
$arr = array(
array('name'=>'joe','a'=>'b'), 
array('name'=>'bob','c'=>'d')); 
var_dump(array_search(array('name'=>'bob'),$arr)); 
//fails: bool(false) 
?> 

다른 키가 있으면 n 다른 방법으로 당신이 이미하는 것처럼 루핑. 당신은 단지 이름으로 그들을 찾을 필요가 있고, 이름이 고유 경우 배열 만들 때, 키로 사용을 고려 : 당신의 이름에 대한 작업을 수행해야하는 경우

<?php 
$arr = array(
'joe' => array('name'=>'joe','a'=>'b'), 
'bob' => array('name'=>'bob','c'=>'d')); 
$arr['joe']['a'] = 'bbb'; 
?> 
2

가 작동합니다 정확한 같은 배열을 검색하면되지 당신 다른 값이 거기에, array_search

$key = array_search('joe', $array); 
echo $array[$key]; 
+0

완벽하게 부탁드립니다. – Orbit

+0

@Brandon : 당신은 환영합니다 ... – Sarfraz

+1

굉장하고 작동하는 코드 *와 *는 아닙니다. 'bill'을 찾아보십시오. 그러면'joe'는 지속적으로 작은 blighter라는 것을 알게 될 것입니다. $ 0 키가 비어 있기 때문에 – salathe

0

이름 내에서 고유 당신의 배열이 더 나은 것 : 여러 속성으로

array(
'joe'=> 'large', 
'bill'=> 'small' 
); 

:

array(
'joe'=>array('size'=>'large', 'age'=>32), 
'bill'=>array('size'=>'small', 'age'=>43) 
); 

좀 더 OOP의 approac을 고려하는 것이 좋습니다 여기지만 h. 당신은 숫자 키를 사용해야하는 경우

array_search

0

에서 당신은 당신의 루프에 충실 할 수 본다. 이 방법과 다른 방법 사이에는 큰 차이가 없습니다. 배열은 항상 선형 적으로 통과해야합니다. 즉, 특정 값을 가진 배열 쌍을 찾으려면 다음 함수를 사용할 수 있습니다.

  • array_search (해당 값을 가진 요소가 하나 뿐인 경우).
  • array_keys (둘 이상일 수있는 경우)
+0

아, 그러면 조금 더 잘 이해할 수 있습니다. 세션에 많은 양의 데이터를 저장하므로 액세스 할 때마다 쿼리 할 필요가 없습니다. 이 나쁜 습관인가? – Orbit