【问题标题】:Trying to match variables in a PHP array尝试匹配 PHP 数组中的变量
【发布时间】:2012-10-06 09:29:40
【问题描述】:

我遇到了一个 php 数组问题。我有一个从 URL 获取值的网页,我需要将这些值与页面上的某些值进行交叉引用,如果它们匹配输出“是”。这是一个表达式引擎的工作。

URL 类似于 domain.com/page/C12&C14

C12 和 C14 代表不同的类别。我取了网址的最后一位,从值中删除了“C”,然后将 12&14 分解为一个数组。

我 print_r 页面上的数组,它显示:Array ( [0] => 12 [1] => 14 )

所以,值在数组中。可爱。

现在在页面上我有一个看起来像

的 html 列表

10
12
14
15

我想在数组中当前的变量旁边输出一个 YES,所以理想的输出是:

10
12 - 是
14 - 是的
15

我正在尝试这个,但它总是在他们旁边说“不”。

$currentnumber = 12;
foreach ($tharray as $element) { 
if ($element == $currentnumber) { echo "Yes"; } else { echo "No"; }  
}

我认为这应该可行,但事实并非如此。我检查了一下,数组和变量都是刺痛的。我对两者都做了一个 strlen() 来查看它们是否相同,但 $currentnumber 输出 '13' 而数组变量输出 '2'。

关于为什么它是 13 的任何想法?

变量是否是错误的字符串类型 - 如果是,我将如何转换它?

【问题讨论】:

  • 什么是 var_dump($tharray) ??

标签: php arrays string variables


【解决方案1】:

你可以试试

$tharray = array(10,12,14,15);
$allowed = array(12,14);

echo "<pre>";
foreach ( $tharray as $element ) {
    if (in_array($element, $allowed)) {
        echo $element, " -  Yes ", PHP_EOL;
    } else {
        echo $element , PHP_EOL ;
    }
}

如果您不介意单行解决方案

array_walk($tharray, function($item)use($allowed) { echo in_array($item, $allowed) ?  $item. " -  Yes ". PHP_EOL : $item . PHP_EOL  ;});

输出

10
12 -  Yes 
14 -  Yes 
15

【讨论】:

  • 非常感谢 Baba - 原来这是 ExpressionEngine 的一个恼人的 php 解析问题 - 而不是 php 代码的问题。感谢您的帮助
猜你喜欢
  • 2012-02-19
  • 2017-03-28
  • 1970-01-01
  • 2014-01-07
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
相关资源
最近更新 更多