2011-09-18 33 views
1

我有幾個字符串,如何搜索第一個值並從中獲取其他值?查找一個字符串並獲取相關值

print_r?

Array([0] => Title,11,11 [1] => Would,22,22 [2] => Post,55,55 [3] => Ask,66,66) 

,如:

如果發送此數組值Title並獲得價值Title,11,11
或發送Would獲取值Would,22,22
或發送Post獲取值Post,55,55
或發送Ask獲取值Ask,66,66

怎麼辦?

回答

1

假設:

$arr = Array([0] => Title,11,11 [1] => Would,22,22 [2] => Post,55,55 [3] => Ask,66,66) 
$string = 'Would'; 

然後

//Call the function with the search value in $string and the actual array 
$required_arr[$string] = search_my_array($string, $arr); 

function($str , $array) 
{ 
    //Trace the complete array 
    for($i = 0; $i<count($array); $i++) 
    { 
     //Break the array using explode function based on ',' 
     $arr_values[$i] = explode(',',$array[i]) 
     if($str == $arr_values[$i][0]) // Match the First String with the required string 
     { 
      //On match return the array with the values contained in it 
      return array($arr_values[$i][1], $arr_values[$i][2]); 
     } 
    } 
} 

現在

$required_arr['Would'] // will hold Array([0] => 22 [1] => 22) 
+0

尋找幾個字符串搜索它的值。 ! –

0

是指數重要?爲什麼不..

$arr = array(
    'Title' => array(11, 11), 
    'Would' => array(22, 22), 
    'Post' => array(55, 55), 
    'Ask' => array(66,66) 
); 

$send = "Title";  // for example 
$result = $arr[$send]; 
+0

如果'$ arr'是這樣的:'Array([0] => Title,11,11 [1] => Would,22,22 [2] => Post,55,55 [3] => Ask,66 ,66)'它怎麼樣? –

+0

@Scott Evernden:不錯的嘗試^^ – greg0ire

1

寫一個函數來搜索數組。這應該工作不夠好

<?php 
    // test array 
    $arr = array('Title,11,11','Would,22,22','Post,55,55','Ask,66,66'); 
    // define search function that you pass an array and a search string to 
    function search($needle,$haystack){ 
    // loop over each passed in array element 
    foreach($haystack as $v){ 
     // if there is a match at the first position 
     if(strpos($v,$needle) === 0) 
     // return the current array element 
     return $v; 
    } 
    // otherwise retur false if not found 
    return false; 
    } 
    // test the function 
    echo search("Would",$arr); 
?> 
+0

該函數可能會返回布爾FALSE,但也可能會返回一個非布爾值,其值爲FALSE,如0或「」。有關更多信息,請閱讀布爾部分。使用===運算符來測試此函數的返回值。來源:http://php.net/strpos ??? –

+0

@ greg0ire增加了額外的'=' - 我猜是因爲他不理解我的代碼。我不是試圖檢測是否匹配或者不是布爾值,而是檢測匹配是否在位置0.我認爲'=='是正確的在這裏使用的權利? –

+0

您是否知道0 == false,但是0!== false?這是我對修改的評論。由於strpos()可能返回false,所以additional =很重要,對嗎? – greg0ire

0

關於使用類似的怎麼樣,讓你不循環通過整個數組:

$array = array("Title,11,11", "Would,22,22", "Post,55,55", "Ask,66,66"); 
$key = my_array_search('Would', $array); 
$getvalues = explode(",", $array[$key]); 

function my_array_search($needle = null, $haystack_array = null, $skip = 0) 
{ 
    if($needle == null || $haystack_array == null) 
     die('$needle and $haystack_array are mandatory for function my_array_search()'); 
    foreach($haystack_array as $key => $eval) 
    { 
     if($skip != 0)$eval = substr($eval, $skip); 
     if(stristr($eval, $needle) !== false) return $key; 
    } 
    return false; 
} 
相關問題