PHP在数组中查找字符串

时间:2016-04-25 16:17:57

标签: php explode

我在MySql中有一个列配置文件

firstset=one;two;three|secondset=blue;yellow;red;|thirdset=width;height;|

(例子)我需要从yellow获取secondset到变量

我写的:

... MySql query etc ...
...
if ($r_select['profile'] != null)
{       
    $resultSelect = $r_select['profile']; 

    $resultArray = explode('|', $resultSelect); 

所以现在我有:

resultArray (

[1] firstset=one;two;three
[2] secondset=blue;yellow;red;
[3] thirdset=width;height;

)

我需要找到resultArray[] secondset=中的位置,然后将其保存在变量中 - 我想要

 $found = "secondset=blue;yellow;red;"

我知道如何explode变量,但我无法在数组[]

中找到字符串

4 个答案:

答案 0 :(得分:1)

试试这个:

secondset=blue;yellow;red;

结果:

<?php foreach ($articles as $article): ?>
    <!-- HTML code here -->
    <?= h($article->users->name) ?> 
    <!-- HTML code here -->
<?php endforeach; ?>

答案 1 :(得分:0)

你看起来像这样吗。

$result = Array (

'1' =>'firstset=one;two;three',
'2' =>'secondset=blue;yellow;red;',
'3' =>'thirdset=width;height;'

);
foreach($result as $key=>$value){
    if(strpos($value,'yellow')){
        $secondset = $value;
        break;

    }

}

$result1 = explode('=', $secondset);
$result2 = explode(';', $result1[1]);
list($a,$b,$c) = $result2;
echo $b;

答案 2 :(得分:0)

没有foreach的另一种解决方案:

if duplicate_session?
  sign_out(current_user)
  redirect_to after_sign_out_path_for(current_user), 
              alert: 'Duplicate Login Detected'
end

然后你可以在$ resultString上应用你的爆炸。如果你有几个结果,比如你的数组中有很多字符串,其中包含“secondset”,你就可以在数组$ result中处理它们。

$resultArray =  [
    'firstset=one;two;three',
    'secondset=blue;yellow;red;',
    'thirdset=width;height;',
];

// all the results matching secondset
$result = preg_grep('/.*secondset.*/', $resultArray);
// if you have only one result
$resultString = reset($result);

答案 3 :(得分:0)

您可以使用array_filter函数和自定义匿名函数。

$resultArray  = array("firstset=one;two;three", "secondset=blue;yellow;red;", "thirdset=width;height;");  

$matches = array_filter($resultArray, function ($haystack) {
    return strpos($haystack, 'secondset=') !== false ? true : false;
});

   // output => Array ( [1] => secondset=blue;yellow;red; )
print_r($matches);

获取所有数组键(在您的情况下只有一个):

// output => Array ( [0] => 1 )
print_r(array_keys($matches));