将数组值转换为变量

时间:2016-01-06 15:54:56

标签: php arrays multidimensional-array

我有一个像这样的数组,

$document[$doc_id][]= array( $user_id
                           , $doc_type
                           , $id_number
                           , $issuer
                           , $expiry_date
                           , $doc_name
                           , $doc_path
                           , $name
                          );

它的外观看起来像这样:

Array ( 
    [15] => Array (

        [0] => Array (
                        [0] => 14
                        [1] => 1
                        [2] => 3242424
                        [3] => 1
                        [4] => 2016-01-26
                        [5] => 3242424_1452091784.jpg
                        [6] => ../documents/
                        [7] => USA Driving Licence
                    )   

        [1] => Array (
                        [0] => 15
                        [1] => 1
                        [2] => 3242424788
                        [3] => 1
                        [4] => 2016-01-26
                        [5] => 3242424_1452045645.jpg
                        [6] => ../documents/
                        [7] => US Driving Licence
                    )

    )
)

使用这个数组我需要将每个数组值都放入php变量中。 像这样:

------------------
$user_id1
$doc_type1
$id_number1
$issuer1
$expiry_date1
$document_name1
$document_path1
$name1
------------------
$user_id2
$doc_type2
$id_number2
$issuer2
$expiry_date2
$document_name2
$document_path2
$name2

任何人都可以告诉我如何在PHP中执行此操作吗? 希望有人可以帮助我。 谢谢。

5 个答案:

答案 0 :(得分:1)

在这里,这正是你想要的。而且,你不应该做的事情。

<?php
$variables = array("user_id", "doc_type", "id_number", "issuer", "expiry_date", "doc_name", "doc_path", "name");
$i = 1;
foreach($your_array[0] as $array){
    for($j = 0; $j < count($variables); $j++){
        ${$variables[$j] . $i} = $array[$j];
    }
    $i++;
}
?>

答案 1 :(得分:1)

我没有足够的声誉对你的第一篇文章发表评论,但是:

  

是的我通过mysql select - user3733831

的结果创建了该数组

你可以使用mysqli_fetch_assoc函数返回一个关联数组(意味着结果集键将是你的数据库列之后的名字)

所以假设您的数据库表看起来像这样

user_id | doc_type | id_number |发行人| expiry_date | doc_path |名称

您的结果集将如下所示

Array (

    [0] => Array (
          [user_id] => 14
          [doc_type] => 1
          [id_number] => 3242424
          [issuer] => 1
          [expiry_date] => 2016-01-26
          [doc_name] => 3242424_1452091784.jpg
          [doc_path] => ../documents/
          [name] => USA Driving Licence
    )   

)

修改

好的......查看了你的代码,而不是

$stmt->bind_param('i', $edit);  
$stmt->execute();    
$stmt->store_result(); 
$stmt->bind_result(
    $doc_id
    , $user_id
    , $veryfy_doc_type
    , $id_number
    , $document_issuer
    , $expiry_date
    , $document_name
    , $document_path
    , $doc_name
);
$document = array();
while($stmt->fetch())

你可以使用

$stmt->bind_param("i", $edit);
$stmt->execute();

/* instead of bind_result: */
$result = $stmt->get_result();

/* now you can fetch the results into an array - NICE */
while ($row = $result->fetch_assoc()) {
    //do something
    // here you can access each result as $row[<something>]
    // ex: echo $row['user_id'] will print 14
}

答案 2 :(得分:0)

好的,所以不要在事后修改数组,而是在处理查询结果时按照自己的意愿构建它,就像这样。当然,您可以根据需要调用数组中的条目。

while($stmt->fetch()) {
    if(!isset($document[$doc_id])) {
        $document[$doc_id][]= array( 'userid'          => $user_id, 
                                     'veryfy_doc_type' => $veryfy_doc_type, 
                                     'id_number'       => $id_number, 
                                     'document_issue'  => $document_issuer, 
                                     'expiry_date'     => $expiry_date, 
                                     'document_name'   => $document_name, 
                                     'document_path'   => $document_path, 
                                     'doc_name'        => $doc_name);
            }          
        }

然后它只是在你的数组上运行一个foreach循环的情况,但是现在你可以使用合理的名字了

foreach ($document[$doc_id] as $id => $doc ) {
    echo "id = $id veryfy_doc_type = " . $doc['veryfy_doc_type'];
}

答案 3 :(得分:0)

为什么你要这样做,我不知道。但在PHP中,您可以使用变量变量。例如,假设您有一个字符串'my_var',那么您可以像这样创建变量$ my_var:

$my_string = 'my_var';
$$my_string = 'some value'; // same as: $my_var = 'some_value';

至于你的特定请求,这里是你如何将数组值提取到变量中(假设你只想要$ doc_id中的那些):

// Replace the [...] with the proper variable names (obviously)...
$names = ['user_id', 'doc_type', 'id_number', [...], 'name'];

foreach ( $document[$doc_id] as $id => $values )
{
    $id++; // 0 becomes 1, 1 becomes 2, 2 becomes...
    foreach ( $values as $key => $value )
    {
        // Assume that this is the first value in your array above, 
        // then $key is 0, $id is 1 and $value is 14, so the following 
        // code is the equivalent of typing in: $user_id1 = 14;
        ${$names[$key].$id} = $value;
    }
}

答案 4 :(得分:-1)

将变量名称存储为数组键,然后您可以引用命名键而不是数字,或者遍历数组并打印出键本身。

{{1}}