2016-01-06 3 views
1

Я имею массив выглядит так,Получить значения массива в переменные

$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? Надеюсь, кто-нибудь может мне помочь. Спасибо.

+2

Почему бы вам не оставить это в массиве? – Rizier123

+2

Зачем же ...!? –

+3

У вас там отличный массив, зачем вам перемещать данные в скалярные переменные и удваивать потребность в памяти без каких-либо причин. – RiggsFolly

ответ

-1

Сохраните имена переменных в виде ключей массива, после чего вы можете ссылаться на именованный ключ вместо числа или выполнить итерацию по массиву и распечатать сам ключ.

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

Не уверен, что это действительно помогает много – RiggsFolly

+0

Это, вероятно, не совсем то, что он хочет, но это будет зависеть от того, что он делает с массивом впоследствии. – aynber

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++; 
} 
?> 
+0

nope .. doenst произведение –

+0

@Pamblam, что теперь? –

+0

nope, еще одна ошибка –

1

я не хватает репутации комментировать ваш первый пост, но:

Да я создал этот массив по результату из MySQL выберите - user3733831

вы можете использовать mysqli_fetch_assoc Функция, которая вернет вам ассоциативный массив (это означает, что ключи набора результатов будут именами после столбцов БД)

поэтому, если ваша таблица DB выглядит так:

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 
    ) 

) 

EDIT

Ok ... просмотрел код поэтому вместо

$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 
} 
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 ($document[$doc_id] as $id => $doc) { 
    echo "id = $id veryfy_doc_type = " . $doc['veryfy_doc_type']; 
} 
+0

Спасибо за ваш ответ, Можете ли вы показать мне, как использовать эти значения? например, как использовать 'veryfy_doc_type' 1 и 2? – user3733831

+0

Я попробовал что-то вроде этого 'foreach ($ document [$ doc_id] как $ id => $ doc) { \t $ id_number \t \t \t = $ doc ['id_number']; } echo "
$ id_number"; ' – user3733831

+0

Но его эхом повторяется только второй ряд id_number .. – user3733831

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; 
    } 
} 
Смежные вопросы