2017-08-31 7 views
1

答えはたくさんありますが、私はちょうどこの権利を得るようには思えません。投稿は大きく見えますが、ちょうどそうです。ここに私が持っているものと、私が試みたものがあります。キーを使用して2つの配列を結合する方法は?

Array 
(
    [0] => image 1 
    [1] => image 2 
) 

Array 
(
    [name] => Array 
     (
      [0] => 0.14997300-1503597010599f11d2249df30.jpg 
      [1] => 0.24654000-150113339659797a543c31f24.jpg 
     ) 

    [type] => Array 
     (
      [0] => image/jpeg 
      [1] => image/jpeg 
     ) 

    [tmp_name] => Array 
     (
      [0] => C:\Users\--\AppData\Local\Temp\php509E.tmp 
      [1] => C:\Users\--\AppData\Local\Temp\php509F.tmp 
     ) 

    [error] => Array 
     (
      [0] => 0 
      [1] => 0 
     ) 

    [size] => Array 
     (
      [0] => 55560 
      [1] => 9425 
     ) 

) 

私が試した:

$instructions = $_POST['instructions']; 
$image = $_FILES['instructions_image']; 

$result = array(); 
foreach($instructions as $index => $key){ 
    $t = array(); 
    foreach($image as $img){ 
     $t[] = $img; 
    } 
    $result[$key] = $t; 
} 

そして結果は次のとおりです。

Array 
(
    [image 1] => Array 
     (
      [0] => Array 
       (
        [0] => 0.14997300 1503597010599f11d2249df30.jpg 
        [1] => 0.24654000 150113339659797a543c31f24.jpg 
       ) 

      [1] => Array 
       (
        [0] => image/jpeg 
        [1] => image/jpeg 
       ) 

      [2] => Array 
       (
        [0] => C:\Users\--\AppData\Local\Temp\phpBAD5.tmp 
        [1] => C:\Users\--\AppData\Local\Temp\phpBAE6.tmp 
       ) 

      [3] => Array 
       (
        [0] => 0 
        [1] => 0 
       ) 

      [4] => Array 
       (
        [0] => 55560 
        [1] => 9425 
       ) 

     ) 

    [image 2] => Array 
     (
      [0] => Array 
       (
        [0] => 0.14997300 1503597010599f11d2249df30.jpg 
        [1] => 0.24654000 150113339659797a543c31f24.jpg 
       ) 

      [1] => Array 
       (
        [0] => image/jpeg 
        [1] => image/jpeg 
       ) 

      [2] => Array 
       (
        [0] => C:\Users\--\AppData\Local\Temp\phpBAD5.tmp 
        [1] => C:\Users\--\AppData\Local\Temp\phpBAE6.tmp 
       ) 

      [3] => Array 
       (
        [0] => 0 
        [1] => 0 
       ) 

      [4] => Array 
       (
        [0] => 55560 
        [1] => 9425 
       ) 

     ) 

) 

結果は、両方の索引で同じの2を持っている理由私はわからないんだけど、私がいました名前、型、tmp_name、エラー、サイズなどの$ _FILESによって提供される配列キー名をどのように保つことができるかを知りたがっています。

ここに私が期待していたことがあります(私は、私が提供しなかったキー名のような追加情報を含んでいました。残念ですが、12時間非停止でしたが、右の道に私を大いに助けてくれるでしょう):

Array 
(
    [0] => Array 
     (
      [text] => image 1, 
      [image_data] => Array (
       [name] => 0.14997300 1503597010599f11d2249df30.jpg 
       [type] => image/jpeg 
       [tmp_name] => C:\Users\--\AppData\Local\Temp\php509E.tmp 
       [error] => 0 
       [size] => 55560 
      ) 

     ) 

    [1] => Array 
     (
      [text] => image 2, 
      [image_data] => Array (
       [name] => 0.24654000 150113339659797a543c31f24.jpg 
       [type] => image/jpeg 
       [tmp_name] => C:\Users\--\AppData\Local\Temp\php509E.tmp 
       [error] => 0 
       [size] => 9425 
      ) 

     ) 

) 
+2

を試してみてください、あなたの期待される結果を共有してください。 –

+0

キー名を保持するには、内部の 'foreach()'ループを確認してください。その配列のインデックスをスキップしていて、数値配列を新しい配列に '[] 'を使って入れています – insider

+0

これを指摘してくれてありがとうございます – Craig

答えて

1

私はこれが役に立ちます。ここでは、あなたのロジックにより、これらのアレイを組み合わせたカスタムスクリプトを記述する必要があり、単純なforeachループarray_keysarray_combinearray_column

Try this code snippet here

$result=array(); 
foreach($images as $key => $image) 
{ 
    $result[]=array(
     "text"=>$image, 
     "image_data"=>array_combine(
       array_keys($instructions), 
       array_column($instructions,$key)) 
    ); 
} 
print_r($result); 
+1

読みに行くと便利でしたarray_columnの上に置いて、あなたが共有した全く同じコードを書いたにもかかわらず、なぜ私が別の結果を得ているのかを理解するために、命令と画像の変数名を混ぜ合わせてみました。それは完璧です、正しい方向に私を導いてくれてありがとうSahil。 – Craig

+1

@SahilGulatiあなたのスクリプトは、 'image_data'サブアイテムキーを失っています( - ; – Neodan

+0

@John Gladがあなたに私の友人を助けるために... :) –

2

を使用しています。このタスクでは、この配列関数を使用することができます:array_combinearray_keysarray_column

例:

<?php 
$a1 = ['image 1', 'image 2']; 
$a2 = [ 
    'name' => ['0.14997300-1503597010599f11d2249df30.jpg', '0.24654000-150113339659797a543c31f24.jpg'], 
    'type' => ['image/jpeg', 'image/jpeg'], 
    'tmp_name' => ['C:\Users\--\AppData\Local\Temp\php509E.tmp', 'C:\Users\--\AppData\Local\Temp\php509F.tmp'], 
    'error' => [0, 0], 
    'size' => [55560, 9425] 
]; 

$result = []; 
foreach ($a1 as $k => $v) { 
    $result[] = [ 
     'text' => $v, 
     'image_data' => array_combine(array_keys($a2), array_column($a2, $k)) 
    ]; 
} 

print_r($result); 
0

これはあなた $ RESを助ける=配列(0 => 'イメージ1'、1 => '画像2');

  $valu=array('name' => array(0=> '0.14997300-1503597010599f11d2249df30.jpg',1 => '0.24654000-150113339659797a543c31f24.jpg' 
        ),'type' => array(0 => 'image/jpeg',1 => 'image/jpeg'), 'tmp_name'=> array(0 => 'C:\Users\--\AppData\Local\Temp\php509E.tmp',1 => 'C:\Users\--\AppData\Local\Temp\php509F.tmp'),'error' => array(0 => 0,1 => 0),'size' => array(0 => 55560, 1 => 9425) 
        ); 

      $newarr=array(); 
      foreach($res as $key=>$val) 
      { 
       $newarr[$key]['text']=$val; 
       $newarr[$key]['image_data']=array('name'=>$valu['name'][$key],'type'=>$valu['type'][$key],'tmp_name'=>$valu['tmp_name'][$key],'error'=>$valu['error'][$key],'size'=>$valu['size'][$key]); 
      } 
      echo '<pre>'; 
      print_r($newarr); 
0

この

$fileData = array(
    'name' => ['0.14997300-1503597010599f11d2249df30.jpg','0.24654000-150113339659797a543c31f24.jpg'], 
    'type' => ['image/jpeg','image/jpeg'], 
    'tmp_name' => ['C:\Users\--\AppData\Local\Temp\php509E.tmp','C:\Users\--\AppData\Local\Temp\php509F.tmp'], 
    'error' => [0,0], 
    'size' => [55560,9425]); 

$someArr = array('image 1','image 2'); 
$fileData['somedata'] = $someArr; 


function reFileData($fileData) { 
    $arr = array(); 
    $keys = array_keys($fileData); 
    for ($i=0; $i < count($fileData['name']); $i++) { 
     foreach ($keys as $key) { 
      $arr[$i][$key] = $fileData[$key][$i]; 
     } 
    } 
    return $arr; 
} 

print_r(reFileData($fileData)); 
関連する問題