【问题标题】:PHP - How to assign string key and value for array within 2 foreach loops?PHP - 如何在 2 个 foreach 循环中为数组分配字符串键和值?
【发布时间】:2013-08-04 01:13:26
【问题描述】:

我遇到的问题是值在第二个 foreach 循环中被覆盖。我需要设置图像缩略图链接的键并将值设置为图像路径。

$img_thumbs = array('folder/thumb1.jpg','folder/thumb2.jpg','folder/thumb3.jpg');
$img_links = array('folder/image1.jpg','folder/image2.jpg','folder/image3.jpg');

$imgs = array();

foreach($img_links as $img_val)
{       
    foreach($img_thumbs as $thum_val)
    {
        $imgs[$thum_val] = $img_val
    }
}   

print_r($imgs);

OUTPUT(注意图像值如何重复上一个值):

Array ( 
      ["folder/thumb1.jpg"] => ["folder/image3.jpg"],
      ["folder/thumb2.jpg"] => ["folder/image3.jpg"],
      ["folder/thumb3.jpg"] => ["folder/image3.jpg"]
)

我需要什么

Array ( 
      ["folder/thumb1.jpg"] => ["folder/image1.jpg"],
      ["folder/thumb2.jpg"] => ["folder/image2.jpg"],
      ["folder/thumb3.jpg"] => ["folder/image3.jpg"]
)

提前致谢

【问题讨论】:

    标签: php arrays foreach variable-assignment


    【解决方案1】:
    $imgs = array_combine($img_thumbs, $img_links);
    

    http://php.net/array_combine

    如果你绝对想在循环中这样做:

    foreach ($img_thumbs as $i => $thumb) {
        $imgs[$thumb] = $img_links[$i];
    }
    

    【讨论】:

    • array_combine 不想接受字符串作为键。它给了我非法错误。我已经尝试过这样做。
    • 很奇怪...我之前尝试过array_combine,它一直抛出非法字符串错误...但是无论哪种方式我都尝试了你的两个样本,它们就像一个魅力。谢谢!
    【解决方案2】:

    您只需要摆脱 foreach 循环之一,并在每次通过循环时将 Images 数组增加 1

    【讨论】:

    • 你能写一个例子来说明你的意思吗?
    • 我不太精通 PHP,但看起来 @deceze 在第二个代码示例中正确地写出了它。我是从逻辑的角度讲的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2022-07-30
    • 2018-08-12
    • 2014-11-23
    相关资源
    最近更新 更多