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