2014-02-07 67 views
1

我有一個數組:獲取數組中的元素?

array(a,b,c,d,e,f,g,h,i,j); 

祝在信中傳遞和獲得它的字母兩側。例如。 'f'將是'e'和'g'。

有沒有一種簡單的方法來做到這一點。

此外,如果我要選擇'一'我想要一個響應null和'b'。

這裏是我的實際數組,數組搜索如何處理多維數組?

array(19) { [0]=> array(3) { ["id"]=> string(2) "46" ["title"]=> string(7) "A" ["thumb"]=> string(68) "013de1e6ab2bfb5bf9fa7de648028a4aefea0ade816b935dd423ed1ce15818ba.jpg" } [1]=> array(3) { ["id"]=> string(2) "47" ["title"]=> string(7) "B" ["thumb"]=> string(68) "9df2be62d615f8a6ae9b7de36671c9907e4dadd3d9c3c5db1e21ac815cf098e6.jpg" } [2]=> array(3) { ["id"]=> string(2) "49" ["title"]=> string(6) "Look 7" ["thumb"]=> string(68) "0bfb2a6dd1142699ac113e4184364bdf5229517d98d0a428b62f6a72c8288dac.jpg" } etc etc... 
+4

搜索信件,取索引,如果其中一個是< 0 or > count(array)返回null,則取index-1和index + 1的元素。 – markusthoemmes

+0

謝謝Merguez,只是想知道這是否有一個PHP函數。 – panthro

+0

您可以使用'array_search'(返回搜索到的字母的索引)和簡單數組操作的組合。 – markusthoemmes

回答

4

你可以利用array_search()

搜索數組給定值,並返回相應的鍵,如果成功

<?php 
$arr=array('a','b','c','d','e','f','g','h','i','j'); 
$key = array_search('a',$arr); 
echo isset($arr[$key-1])?$arr[$key-1]:'NULL'; 
echo isset($arr[$key+1])?$arr[$key+1]:'NULL'; 

Demo

+0

但邊緣情況呢。 $ key-1對於字母a來說是-1,這是一個無效的密鑰,對於$ key + 1對於使用邊緣情況的j – Zarathuztra

+0

也是一樣的:echo isset($ arr [$ key-1])? $ arr [$ key-1]:null;' – lucasvscn

+0

@lucasvscn,它已經感謝:) –

2

這工作 -

function find_neighbour($arr, $value){ 
    $index = array_search($value, $arr); 
    if($index === false){ 
     return false; 
    } 
    if($index == 0){ 
     return Array(null, $arr[1]); 
    } 
    if($index == count($arr)-1){ 
     return Array($arr[$index-1], null); 
    } 
    return Array($arr[$index-1], $arr[$index+1]); 
} 
$a = Array('a','b','c','d','e','f','g','h','i','j'); 
print_r(find_neighbour($a,"a")); //[null, 'b'] 
print_r(find_neighbour($a,"j")); //['i', null] 
print_r(find_neighbour($a,"e")); //['d', 'f'] 
0
<?php 
$arr=array("a","b","c","d","e","f","g","h","i","j"); 

function context($array,$element) { 
    return array(@$array[array_search($element,$array)-1],@$array[array_search($element,$array)+1]);; 
} 

print_r(context($arr,"a")); 
print_r(context($arr,"e")); 
print_r(context($arr,"j")); 

輸出:

Array 
(
    [0] => 
    [1] => b 
) 
Array 
(
    [0] => d 
    [1] => f 
) 
Array 
(
    [0] => i 
    [1] => 
) 
0

陣列搜索是一個posibility,如之前的評論,或者您也可以通過一個for循環運行

var selection = 'a'; // your selection 

var arr = [ 'a', 'b', 'c', 'd', 'e', 'f']; // small array 

var i = 0, // define loop i 
    le = arr.length, // define loop length 
    out, // output var 
    match = ''; // matching data 
    before = 'non', // before data 
    after = 'non'; // after data 

for(i; i < le; i++){ // run the loop 
    if(arr[i] === selection){ // if loop matches selection 
    match = arr[i]; // set match var 
    after = arr[i+1] || after; // set after var, if undifined, set "non" from above 
    before = arr[i-1] || before; // set before var if undefined, set "non" from above 
    } 
} 

out = 'match: ' + match + ' before: ' + before + ' after: ' + after; //build output 

alert(out); 

http://jsbin.com/qixu/3/