Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php类别和子类别中的数组到字符串转换错误_Php_Multidimensional Array - Fatal编程技术网

php类别和子类别中的数组到字符串转换错误

php类别和子类别中的数组到字符串转换错误,php,multidimensional-array,Php,Multidimensional Array,我有一个php代码,它给出了一个数组到字符串的转换错误,创建了类别和子类别树节点,但是在编译时发生了错误,让我解释一下我从哪里得到的错误 <?php $conn = mysqli_connect('localhost','res_user','Res@123','res_db'); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error();

我有一个php代码,它给出了一个数组到字符串的转换错误,创建了类别和子类别树节点,但是在编译时发生了错误,让我解释一下我从哪里得到的错误

<?php
  $conn = mysqli_connect('localhost','res_user','Res@123','res_db');
   if (mysqli_connect_errno())
  {
     echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

  $sql = " SELECT * , category.id AS catId FROM category INNER JOIN sub_category ON category.id = sub_category.category_id
ORDER BY category.id, sub_category.category_id";
$res = mysqli_query($conn, $sql);
$categoryArray = array();
$oldCatId = 0;
while ($row = mysqli_fetch_assoc($res)) {
    if ($row['catId'] != $oldCatId) {
        $categoryArray[$row['catId']] = array(
            'success' => true,
            'category_' . $row['catId'] = array(
        'cat_id' => $row["catId"],
        'cat_name' => $row['cat_name'],
        'cat_img' => $row['cat_img'],
        'sub_category' => array(
            'sub_id' => $row['category_id'],
            'sub_name' => $row['sub_name']
        )
            )
        );
        $oldCatId = $row['catId'];
    } else {
        $categoryArray[$row['catId']]['category_' . $row['catId']]['sub_category'][] = array(
            'sub_id' => $row['category_id'],
            'sub_name' => $row['sub_name']
        );
    }
}
   echo $categoryArray;


?>

您不能使用它,因为它用于输出一个或多个字符串,您需要使用它,例如:


出现错误消息的原因是代码试图显示回波为的数组。此构造仅用于显示字符串,而不是数组。只要为PHP提供标量值(boolean、int、string、float),如果标量的数据类型不是字符串,PHP将临时将其提升为字符串

通常,您需要遍历数组以显示其元素的任何标量值,并编写某种循环结构。PHP为处理多维数组提供了极大的便利,函数array_walk_recursive()与回调一起工作。下面是问题中提到的数组的一个变体,让您了解如何将array\u walk\u recursive()与回调一起使用。既然PHP支持匿名函数,我们可以使用一个函数进行回调,如下所示:

    <?php
    $categoryArray[0]['category_0']['sub_category'][] = array(
            'sub_id' => 500,
            'sub_name' => '1a'
        );
    array_walk_recursive($categoryArray,
                function($value,$key){
                  echo "$key: $value\n";

                });
    // output:
    sub_id: 500
    sub_name: 1a

错误是什么?请粘贴您正在获取的错误。错误是什么,发生在什么位置?在回送$categoryArray时,它给出了错误,注意:在C:\phpxamp\htdocs\sachin\cate\u subcate.php中的数组到字符串转换,在第26行,您必须打印\r($categoryArray)或回送$categoryArray[0]。。。。echo不会打印整个阵列,它将打印阵列的特定位置
    <?php
    $categoryArray[0]['category_0']['sub_category'][] = array(
            'sub_id' => 500,
            'sub_name' => '1a'
        );
    array_walk_recursive($categoryArray,
                function($value,$key){
                  echo "$key: $value\n";

                });
    // output:
    sub_id: 500
    sub_name: 1a