カートへの追加プロセスが台無しになっている場所を突き止めようとしているので、いくつかのログ コード (fwrite) を追加することにしました。そして今、私は立ち往生しています。
変数のスコープについて学ぶ前に最初に試したこと。
$fp = fopen('logs/functions.txt', 'w');
function addtocart($pid,$qty){
fwrite($fp, 'addtocart()\nProduct ID: '. $pid .'\nQuantity: '. $qty .'\n');
if($pid<1 or $qty<1) return;
if(is_array($_SESSION['cart'])){
if(product_exists($pid)) return;
$max=count($_SESSION['cart']);
$_SESSION['cart'][$max]['productid']=$pid;
$_SESSION['cart'][$max]['qty']=$qty;
}else{
$_SESSION['cart']=array();
$_SESSION['cart'][0]['productid']=$pid;
$_SESSION['cart'][0]['qty']=$qty;
}
}
fclose($fp);
そのため、fp のようなものが定義されていないというエラーが返されました。
次に、php変数のスコープを調べました。似たようなことが別で書かれていれば、うまくいったかもしれないからです。
$fp グローバルを宣言してみました。
function addtocart($pid,$qty){
global $fp;
fwrite($fp, 'addtocart()\nProduct ID: '. $pid .'\nQuantity: '. $qty .'\n');
$fp をある種の整数に変換するような「警告: fwrite(): 3 は有効なストリーム リソースではありません」というエラーが表示されます。なんで?