将数据库中的数据存储在1d数组中而不是2d

时间:2017-07-31 13:33:35

标签: php arrays

我想将数据库表的一列存储在一个数组中,这样我就可以将它与我拥有的数组进行比较。我只从表中选择一列,然后存储所有行。我已经设法这样做但是在二维数组中但是当将二维数组与我的一维数组进行比较时,我得到一个错误。所以请帮助我将其转换为1d数组或从开始转换,如果我可以将数据存储在1d数组中。

    $array = array();
$serviceId = "SELECT service_id FROM servicesorders WHERE order_id = '$orderId'";
$resultId = mysqli_query($connection, $serviceId) or die(mysqli_error($connection));
while ($serviceIdfinal = mysqli_fetch_assoc($resultId)) {
$array[] = $serviceIdfinal; //the array I used to store the data 
}
var_dump($array);

$isCheckedstring = $_POST['show'];
$isCheckedarray = str_split($isCheckedstring, 4); // the array I want to compare the stored data with
var_dump($isCheckedarray);

两个数组的var_dump如下:

array( 
    [0]=> array(
        ["service_id"]=> "1"
    )
    [1]=> array(
        ["service_id"]=> "7"
    )
    [2]=> array( 
        ["service_id"]=> "11" 
    ) 
)

array(
    [0]=>"0011"
    [1]=>"0012"
)

3 个答案:

答案 0 :(得分:3)

您正在使用mysqli_fetch_assoc,因此您需要获取关联列。

您需要更改

while ($serviceIdfinal = mysqli_fetch_assoc($resultId)) {
    $array[] = $serviceIdfinal; //the array I used to store the data 
}

while ($serviceIdfinal = mysqli_fetch_assoc($resultId)) {
    $array[] = $serviceIdfinal['service_id']; //the array I used to store the data 
}

答案 1 :(得分:0)

当数据库返回一个数组时,它返回一个行数组,每个行都是一个关联数组。每行中都有一个元素并不重要,它仍然是一个数组数组。

您将不得不使用foreach循环将$array从一种形式转换为另一种形式:

$newArray = [];
foreach($array as $row) {
    // This line here is where you'll do any needed string modifications
    // such as padding with leading zeroes, etc.
    $newArray[] = $row["service_id"]; 
}
var_dump($newArray)

这应该净你:

array( 
    [0]=> "1",
    [1]=> "7",
    [2]=> "11"
)

编辑:或者你应该在你正在使用的while循环中执行它,正如米兰在his answer指出的那样。

答案 2 :(得分:0)

您可以尝试使用PDO而不是mysqli。

$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$sql = $conn->query("your query");
$sql->fetch(PDO::FETCH_ASSOC);

那就是:)