Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查找一个字符串并获取相关值_Php_Arrays_Codeigniter_Strpos - Fatal编程技术网

Php 查找一个字符串并获取相关值

Php 查找一个字符串并获取相关值,php,arrays,codeigniter,strpos,Php,Arrays,Codeigniter,Strpos,我有几个字符串,如何搜索第一个值并从中获取其他值 打印\r或?: Array( [0] => Title,11,11 [1] => Would,22,22 [2] => Post,55,55 [3] => Ask,66,66 ) 比如: 如果发送此数组值Title并获取值Title,则为11,11 或者发送will获取值will,22,22 或者发送Post获取值Post,55,55 或者发送Ask获取值Ask,66,66 如何执行此操作?使用循环遍历数组并将值与匹配。

我有几个字符串,如何搜索第一个值并从中获取其他值

打印\r

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

如果发送此数组值
Title
并获取值
Title,则为11,11

或者发送
will
获取值
will,22,22

或者发送
Post
获取值
Post,55,55

或者发送
Ask
获取值
Ask,66,66

如何执行此操作?

使用循环遍历数组并将值与匹配。

假设:

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


这些指数重要吗?为什么不

$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];

编写一个函数来搜索数组。这应该足够有效

<?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);
?>

使用类似的方法如何,这样就不会在整个阵列中循环:

$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;
}

如果
$arr
是这样的:
数组([0]=>Title,11,11[1]=>will,22,22[2]=>Post,55,55[3]=>Ask,66,66)
怎么样?@Scott Evernden:nice try^^这个函数可能返回布尔值FALSE,但也可能返回一个计算结果为FALSE的非布尔值,例如0或“”。有关更多信息,请阅读布尔值部分。使用===运算符测试此函数的返回值。来源:???是@greg0ire添加了额外的
=
——我猜是因为他不理解我的代码。我并不是要检测是否存在布尔值匹配,而是检测匹配是否位于位置0。我认为
==
是这里使用的正确方法,对吗?你知道0==false,但是0!==假的?这是我对修改的评论。因为strpos()可能会返回false,所以额外的=很重要,对吗?@Billy Moon:如果找不到针,你的测试就会通过。@GregFire:你当然是对的-出于某种原因,我对它感到非常困惑。实际上,在
strpos
函数中,我的针线和草垛也走错了方向。你能帮我检查一下吗。干杯
<?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);
?>
$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;
}