来自json数组的php调用变量

来自json数组的php调用变量,php,json,Php,Json,从下面的代码中,我如何从数组中调用poter的值,并将其设置在php变量中以用于另一个查询 我应该写什么来代替下面的? $ip = 1 ; $query = mysqli_query($con, "SELECT * FROM poems WHERE ip = '$ip' "); $json1 = array(); while($data = mysqli_fetch_assoc($query)) array_push($json1, array('title' => $data['poem

从下面的代码中,我如何从数组中调用
poter
的值,并将其设置在php变量中以用于另一个查询

我应该写什么来代替下面的

$ip = 1 ;
$query = mysqli_query($con, "SELECT * FROM poems WHERE ip = '$ip' ");
$json1 = array();
while($data = mysqli_fetch_assoc($query))
array_push($json1, array('title' => $data['poem_title'],
        'body' => $data['poem_body'],
         'poet' => $data['poet'],
            ));
$poet = ???; 

您只需要将该值分配给循环中的一个新变量。您的变量
$poter
将在循环后可用

$query = mysqli_query($con, "SELECT * FROM poems WHERE ip = '$ip'");
$json1 = array();

while ($data = mysqli_fetch_assoc($query)) {
    array_push($json1, array(
        'title' => $data['poem_title'],
        'body' => $data['poem_body'],
        'poet' => $data['poet']
    ));
    $poet = $data['poet'];
}

// Your new variable is available
echo $poet
但是您在这里所做的并没有真正意义,因为如果您在多行数据中循环,
$poter
将只等于循环结束时最后一行的值。它将在循环的每次迭代中被覆盖

$query = mysqli_query($con, "SELECT * FROM poems WHERE ip = '$ip'");
$json1 = array();

while ($data = mysqli_fetch_assoc($query)) {
    array_push($json1, array(
        'title' => $data['poem_title'],
        'body' => $data['poem_body'],
        'poet' => $data['poet']
    ));
    $poet = $data['poet'];
}

// Your new variable is available
echo $poet
如果在数据库中,
ip
是一个主键或唯一键,您可以保证只检索一行,那么您根本不想使用循环。您可以将其简化为:

$query = mysqli_query($con, "SELECT * FROM poems WHERE ip = '$ip'");
$json1 = mysqli_fetch_assoc($result);
$poet = $json1['poet'];

为什么不干脆
$poter=$data['poter']???不工作,很明显,我想从while loopWell中取出变量如果它循环10次,那么您有10个子数组,每个子数组都有一个
poter
。您想要哪一个?看起来OP知道查询的每一行中的
poter
都是相同的值。我想是吧。如果是这样,那么
$poter=$json1[0]['poter']
应该可以工作。它可以工作,非常感谢@GetSetyes,
ip
是主要的,只检索到一行,实际上你的代码为我解决了很多问题。。谢谢