【问题标题】:Array isn't being seen by function.. storing in variable a no-no?数组没有被函数看到..存储在变量中是不是?
【发布时间】:2013-02-21 01:46:53
【问题描述】:

我用谷歌搜索并没有看到答案。我有一个数组,我存储在一个变量中,我试图传递给一个函数..

$myArr = 'array('item1', 'item2')';

require('script.php'); //where actual function is

makeCode($myArr);

当我使用 makeCode(array('item1', 'item2'));它工作正常。我什至尝试将global $myArr 添加到makeCode,但这也没有用。

我认为这是一个范围问题,但也许我误用了字符串。 print_r($myArr) 打印正确,只是没有通过什么的。

该函数基本上只是比较 $myArr 值,如果它与函数数组中的内容匹配,它会输出正确的 HTML,所以我没有列出它。它有效,只是不是变量.. 谢谢!

--makeCode()--
 function makeCode($listArr){
 /* global $myArr; //Tried this */
   $output = '';
   $items = array(
      'item1'        =>  "Code for item1",
      'item2'         =>  "Code for item2"
       )
   /* $myArr = $listArr; //tried this too */
        foreach ($listArr as $val) {
            if(array_key_exists($val, $items)){
                if(strlen($output)>0) $output .="|"; //Add Sytnax
                $output .="$items[$val]";
            }
        }
  }

差不多了。

【问题讨论】:

    标签: php variables scope


    【解决方案1】:
    $myArr = 'array('item1', 'item2')';
    

    $myArr 在这里是一个字符串。我不确定这就是你的意思。试试:

    $myArr = array('item1', 'item2');
    

    如果这是你的意思,那么这将与调用不同

    makeCode(array('item1', 'item2')); 
    

    因为这是使用实际数组调用。

    【讨论】:

    • 啊,我明白了。通过这样做,它只加载 $myArr 中的第一项。我需要 $myArr 做的是在里面输出array('item1', 'item2'),就像它在你帖子的最后一行一样。
    • 它确实会打印 Array ( [0] => item1 [1] => item2 )。我必须格式化这个数组吗?他们在同一个页面上,我只是想让它与其余的覆盖保持一致。
    • @kcdwayne 我不确定我是否遵循,也许您可​​以将makeCode 的代码与您期望的输出一起添加到您的问题中?
    • 当然。我已经更新了这个功能。我只是想让 $myArr 在 makeCode() 中工作,因为 makeCode($myArr) 就像我使用 makeCode(array('item1', 'item2')); .现在输出完全消失了。 (或者只打印值 0 并跳过其余部分)
    • @kcdwayne 您的方法中有一个小错误:foreach ($listArr as $val) 使用的是$listArr,但方法的开头使用的是$listArray
    猜你喜欢
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2015-03-26
    • 2022-08-24
    • 1970-01-01
    相关资源
    最近更新 更多