2011-09-21 2 views
0

배열 (300x 이상의 항목, simplexml을 통해 가져옴)을 반복하고 특정 $ x-> channel-> item-> title이있는 항목을 모두 꺼내 다른 배열에 넣는 방법은 무엇입니까?배열을 포징하고 일치 시키는가?

나는 건초 더미 니들 일이나 방법의 머리 나 꼬리가 배열

을 밀어 수 없습니다 내가 좋아하는 배열 (바늘)이 말 : 배열 ("3332", "3300", "3493"를, "8380") 큰 배열 (haystack)을 통해 나타나는 것이 있으면 일치시키고 싶습니다. 어떻게해야합니까?

답변

0

큰 배열을 반복하고 $x->channel->item->title 값을 확인하십시오. 그것은 당신의 기준을 충족하는 경우, 새로운 배열에 밀어 넣습니다 : 요셉의 루프에서 수정

$theArray; // Your 300+ array 
$lookFor = array('firstthing', 'second thing', 'third thing'); 
$newArray = array(); 

foreach($theArray as $x) { 
    if (in_array($x->channel->item->title, $lookFor)) { 
     array_push($newArray, $x); 
    } 
} 
+0

방법을 내가 여러 개 일치합니까? 내가해야합니까 == 'firstthing'|| == '두 번째 것'|| == '세 번째 것'? – jmoon

+0

in_array()를 사용할 수 있습니다. 아래 예제를 참조하십시오. – squall3d

+0

@jmoon - 업데이트 된 답변보기 ... –

0
foreach($yourArray as $key => $value) 
{ 
    //do your things with $key and/or $value 
} 
0

, 당신은 할 수 있습니다 :

$theArray; // Your 300+ array 
$newArray = array(); 
$matchArray = array("3332","3300","3493","8380"); 

foreach($theArray as $x) { 
    if (in_array($x->channel->item->title, $matchArray)) { 
     array_push($newArray, $x); 
    } 
} 

체크 아웃와 in_array()를 http://php.net/manual/en/function.in-array.php

+0

은 처음에는 중복이 없으면 중복을 방지합니까? 내가 루프하는 법을 모르기 때문에 4 개의 각각의 4 개의 결과를 보여주는 귀찮은 정신 나간 방법을 시도했다. – jmoon

+0

$ matchArray에 duplicates가 있다면, in_array()는 단순히 true를 반환 할 것이므로 중복되지 않아야한다. – squall3d