【问题标题】:PHP echo multidimensional array inside a functionPHP在函数内回显多维数组
【发布时间】:2017-07-19 10:11:34
【问题描述】:

我面临一个小问题,我认为我忽略了一切。我想要一个回显数据库中所有类别列表的函数。

$host = "localhost";
$dbuser = "user";
$dbpass = "password";
$dbname = "name";

$dbcon = mysqli_connect($host, $dbuser, $dbpass, $dbname) or die(mysqli_error());

$multi_array = array();
$query = mysqli_query($dbcon, 'SELECT * FROM `fdf_content`');
while($output = mysqli_fetch_array($query)){
    $multi_array[] = $output;
}

function get_cats($multi_array){
    foreach($multi_array as $cats){
        echo $cats['category'];
    }
}

但是,我收到以下错误:

Missing argument 1 for get_cats()Undefined variable: multi_array Invalid argument supplied for foreach()

问题是函数中未定义数组,但我不知道为什么。提前致谢!

【问题讨论】:

  • 首先需要定义这个变量 $multi_array = [];像这样的循环和 foreach($multi_array as $cats) {}
  • 粘贴正确的代码。
  • 在代码中调用 get_cats() 的位置?
  • 请包含存在错误函数的代码。还有什么 print_r($multi_array);说? Foreach 的“as”需要左侧的空间。
  • 我用真实代码编辑了帖子,在编辑易受攻击的信息时出现了一些错误。

标签: php arrays function multidimensional-array foreach


【解决方案1】:

PHP 中的scope of a variable 是创建(初始化/修改)它的函数。在任何函数之外创建/修改的变量都是全局变量,它们只在函数外部可见。

让函数接收要使用的值作为参数:

function get_cats(array $categories){
    foreach ($categories as $cats){
        echo $cats, " "; 
    }
}

在函数调用中传递所需的值作为参数:

$multi_array = array();
while ($output = mysqli_fetch_array($query)) {
    $multi_array[] = $output;
}

// Call the function that prints the content of $multi_array
get_cats($multi_array);

这样您就可以使用不同的值重用get_cats() 函数:

$fruits = array('apple', 'banana', 'orange');

get_cats($fruits);
// Will print:
// apple banana orange

【讨论】:

  • 这段代码效果很好,尽管您需要将echo $cats,""; 更改为 $cats['db_row_name'];`
  • 有什么方法可以让函数变成get_cats();?由于我在函数中使用了特定的数据库行名,因此无论如何我都无法重用它
  • 如果您想编写糟糕的代码,总有办法做到这一点。在我链接到答案的文档页面中对此进行了解释(提示:global),但我不推荐它。
  • 啊,如果全局是唯一的选择,那我们就这样吧;)
【解决方案2】:

如果你得到的是多维数组,那么使用如下:

function get_cats() {
foreach($multi_array as $cats->$value){
    echo $value; 
}}

如果上面不工作,请在下面测试:

 function get_cats() {
foreach($multi_array as $cats->$value){
    print_r($value); 
}}

再次检查值是数组还是对象。

【讨论】:

  • 未定义变量$multi_array。为 foreach() 提供的参数无效。
【解决方案3】:

你有语法错误! 试试这个

       function get_cats(){
       foreach($multi_array as $cats)
       {
           echo $cats; 
       } 
       }

【讨论】:

  • 未定义变量$multi_array。为 foreach() 提供的参数无效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 2018-09-25
  • 2015-11-20
相关资源
最近更新 更多