2017-08-31 115 views
0

我有名字my_image[url]my_image[caption]動態輸入

<input name="my_image[url]" type="hidden" value="<?php echo $imgurl['url'];?>"/> 
<input name="my_image[caption]" type="text" value="<?php echo $imgurl['caption'];?>"> 

即使插入一些圖片和文字說明動態,裏面的isset的$ _POST ['my_image']是隻捕獲1圖片1說明:

if (isset($_POST['my_image'])){ 
    update_option('imagens_inicio',array($_POST['my_image']); 
    echo '<pre>'; var_dump($_POST['my_image']);echo '</pre>'; 
} 

array(1) { 
    [0]=> 
    array(2) { 
    ["url"]=> 
    string(96) "http://localhost/theme/wp-content/uploads/2017/08/4e07dd2bd752b989e9b4687129982977.jpg" 
    ["caption"]=> 
    string(0) "test text" 
    } 
} 

我該怎麼辦在isset中捕獲所有圖像和標題$_POST['my_image']

解決:

$url = $_POST['url']; 
$caption = $_POST['caption']; 

$data = array_map(function ($url, $caption) { 
     return compact('url', 'caption'); 
}, $url, $caption); 

回答

1

總之,只有isset不會得到你所需要的結果。

由於my_image [url]將永遠解析爲$ _POST ['my_image'] ['url']它確實會被覆蓋。如果使用[],php會自動增加每次發生的數字,但在這種情況下,它不會將url和標題放在一起。

如果你想確保你在你提供,你可以命名輸入字段這樣的方式接收數據:

my_image[0][url] 
my_image[0][caption] 
my_image[1][url] 
my_image[1][caption] 
etc... 

你也可以重塑的數據,例如:

url[] 
caption[] 
url[] 
caption[] 
etc 

然後你可以使用一些處理的數據在PHP組合:

<?php 
$data = array_map(function ($url, $caption) { 
    return compact('url', 'caption'); 
}, $_POST['url'], $_POST['caption']); 

var_dump($data); 

要閱讀價值S:

foreach ($data as $image) { 
    echo $image['caption'].': '.$image['url'].PHP_EOL; 
} 

Ofcourse這需要被包裹在一個isset & & is_array檢查的$ _POST [ '網址']和$ _ POST [ '標題']

+0

我讀到有關職能'array_map'和'compact',非常感謝你,現在我理解你的答案,但它仍然返回null var_dump($ data);' – Gislef

+0

'$ _POST ['url'];'''_ _POST ['caption' ];'直接在'array_map'中不起作用,現在沒關係。太感謝了 – Gislef

相關問題