Поиск объекта массива с помощью оператора if
Как говорится в названии я зацикливаюсь с помощью оператора if чтобы найти a
key-value
из массива под названием $decoded, так что в основном функция выглядит следующим образом, если $product-$key
равняется $item
и $product->$key2
равняется $ProductId
затем отредактируйте конкретное значение ключа сначала я протестировал код таким образом, и он работает$decoded = json_decode( $fetched ); $stmt=$this->connection->prepare('update `bills` set `items`=:json where id=:id'); foreach( $decoded as $index => $product ){ if( $product->$key == $item ){ // just the $Product->$key and it works fine $decoded[ $index ]->$key = $value; $json = json_encode( $decoded ); $stmt->execute([ ':json' => $json, ':id' => $bid ]); } }
но когда я добавил Это
$product->$key2 == $ProductId
он перестал работать, так чего же мне здесь не хватает?Что я уже пробовал:
полный код:-
public function AlterJSON( $bid=false, $item=false,$ProductId=false, $key=false, $key2=false, $value=false ){ try{ if( $bid && $item && $key && $value && $ProductId && $this->connected === true ){ $stmt=$this->connection->prepare('select `items` from `bills` where `id`=:id'); $stmt->execute( [ ':id' => $bid ] ); $fetched = $stmt->fetchColumn(); $decoded = json_decode( $fetched ); $stmt=$this->connection->prepare('update `bills` set `items`=:json where id=:id'); foreach( $decoded as $index => $product ){ if( $product->$key == $item && $product->$key2 == $ProductId ){ $decoded[ $index ]->$key = $value; $json = json_encode( $decoded ); $stmt->execute([ ':json' => $json, ':id' => $bid ]); } } return true; } return false; } catch( PDOException $e ){ return $this->errors === true ? $this->error( $e->getMessage() ) : false; } }
вызов функции
$call = $dbConnection->AlterJSON( $BillID, $CurrentPrice,$id, 'price','id', $ProductPrice ); print_r(var_dump($call));
Richard MacCutchan
Использовать отладчик, чтобы проверить значения, которые вы сравниваете.
Gerry Schmitz
PHP начинался как чье-то хобби.