sql >> データベース >  >> RDS >> Mysql

array_push使用時のエラー-最初の引数は配列である必要があります

    コメントによると、$products 関数内に含まれているインクルードファイルによって初期化されました。これは、グローバルではなく、関数に対するスコープを定義します。したがって、global $products;を使用する必要があります インクルードを呼び出す前に。

    function func_that_defined_products() {
      global $products;
      include('file_that_defines_products.php');
    }
    
    // Now when called globally later, it will be at the correct scope.
    
    
    function foo($bar) 
    {
        global $products; 
        $query = 'SELECT p_name FROM 0_products WHERE p_category IN (' . $bar . ')';
        // etc...
    }
    

    いずれにせよ、$GLOBALS['products']を使用する方が少し読みやすいと思います。 globalの代わりに キーワード。そしていつものように、可能な限り、変数をグローバルにアクセスするのではなく、関数に渡すことをお勧めします。

    // If you can, do it this way
    function foo($bar, $products) {
      // $products was a param, and so global is unnecessary
    }
    

    ただし、あなたの場合、CMSがそれを定義していると、そのようにする柔軟性が失われる可能性があります...



    1. Unicode文字の首(U + 9996)とはどのような関係があり、java / mysqlはそれとその友人をどのように扱いますか?

    2. MySQL:関数st_geometryfromtextに提供された無効なGISデータ

    3. MariaDBクラスター10.4の新機能

    4. デフォルトで例外をスローするようにPDOを設定します