我有一个像这样的数组,
$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中执行此操作吗? 希望有人可以帮助我。 谢谢。
答案 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}}