Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在foreach循环中从2个不同的多维数组中输出1个数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 在foreach循环中从2个不同的多维数组中输出1个数组

Php 在foreach循环中从2个不同的多维数组中输出1个数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我需要一些多维数组的帮助。我需要从PHP中的另外两个数组中输出/创建一个新数组。我知道我的例子是错误的,但这里有一个我所拥有的几乎有效的例子: $myarray = array( 'customid1' = array( name=> 'Tim', address=> '23 Some Address' ), 'customid2' = array(

我需要一些多维数组的帮助。我需要从PHP中的另外两个数组中输出/创建一个新数组。我知道我的例子是错误的,但这里有一个我所拥有的几乎有效的例子:

 $myarray = array(
      'customid1' = array(
                  name=> 'Tim',
                  address=> '23 Some Address'
                  ),
      'customid2' = array(
                  name=> 'John',
                  address=> 'Another Address'
                  )
 );

 $keys = array();
 $values = array(); 

 foreach($myarray as $key => $keyitem) {
        $getkeys = $myarray[$key]['name'] .'-and-a-string';
        $keys[] = $getkeys;
 } 

 foreach($myarray as $value => $valueitem) {
        $getvalues = 'some-other-text-'. $myarray[$key]['address'];
        $values[] = $getvalues;           
    }

 $newarray = array_combine($keys, $values); 
上面的代码将获得所有正确的键,除了新数组中该键的值。相反,它在所有键中显示数组中的最后一个值。因此,我的打印结果如下所示:

Array ( Tim-and-a-string => some-other-text-Another Address 
        John-and-a-string => some-other-text-Another Address 
)

如您所见,“其他文本另一个地址”出现在所有文本上,但第二个键“Tim-and-a-string”需要包含“其他文本23其他地址”

这是一个非常小的错误,但您使用的变量错误:

您在第二个
foreach()
中使用的是
$key
而不是
$value

$key
将与之前循环中的最后一个键相同,因为新的foreach循环不会覆盖它

这应该起作用:

$myarray = array(
      'customid1' = array(
                  name=> 'Tim',
                  address=> '23 Some Address'
                  ),
      'customid2' = array(
                  name=> 'John',
                  address=> 'Another Address'
                  )
 );

 $keys = array();
 $values = array(); 

 foreach($myarray as $key => $keyitem) {
        $getkeys = $myarray[$key]['name'] .'-and-a-string';
        $keys[] = $getkeys;
 } 

 foreach($myarray as $value => $valueitem) {
        $getvalues = 'some-other-text-'. $myarray[$value]['address'];
        $values[] = $getvalues;           
    }

 $newarray = array_combine($keys, $values); 

这是一个非常小的错误,但您使用了错误的变量:

您在第二个
foreach()
中使用的是
$key
而不是
$value

$key
将与之前循环中的最后一个键相同,因为新的foreach循环不会覆盖它

这应该起作用:

$myarray = array(
      'customid1' = array(
                  name=> 'Tim',
                  address=> '23 Some Address'
                  ),
      'customid2' = array(
                  name=> 'John',
                  address=> 'Another Address'
                  )
 );

 $keys = array();
 $values = array(); 

 foreach($myarray as $key => $keyitem) {
        $getkeys = $myarray[$key]['name'] .'-and-a-string';
        $keys[] = $getkeys;
 } 

 foreach($myarray as $value => $valueitem) {
        $getvalues = 'some-other-text-'. $myarray[$value]['address'];
        $values[] = $getvalues;           
    }

 $newarray = array_combine($keys, $values); 

这是一个非常小的错误,但您使用了错误的变量:

您在第二个
foreach()
中使用的是
$key
而不是
$value

$key
将与之前循环中的最后一个键相同,因为新的foreach循环不会覆盖它

这应该起作用:

$myarray = array(
      'customid1' = array(
                  name=> 'Tim',
                  address=> '23 Some Address'
                  ),
      'customid2' = array(
                  name=> 'John',
                  address=> 'Another Address'
                  )
 );

 $keys = array();
 $values = array(); 

 foreach($myarray as $key => $keyitem) {
        $getkeys = $myarray[$key]['name'] .'-and-a-string';
        $keys[] = $getkeys;
 } 

 foreach($myarray as $value => $valueitem) {
        $getvalues = 'some-other-text-'. $myarray[$value]['address'];
        $values[] = $getvalues;           
    }

 $newarray = array_combine($keys, $values); 

这是一个非常小的错误,但您使用了错误的变量:

您在第二个
foreach()
中使用的是
$key
而不是
$value

$key
将与之前循环中的最后一个键相同,因为新的foreach循环不会覆盖它

这应该起作用:

$myarray = array(
      'customid1' = array(
                  name=> 'Tim',
                  address=> '23 Some Address'
                  ),
      'customid2' = array(
                  name=> 'John',
                  address=> 'Another Address'
                  )
 );

 $keys = array();
 $values = array(); 

 foreach($myarray as $key => $keyitem) {
        $getkeys = $myarray[$key]['name'] .'-and-a-string';
        $keys[] = $getkeys;
 } 

 foreach($myarray as $value => $valueitem) {
        $getvalues = 'some-other-text-'. $myarray[$value]['address'];
        $values[] = $getvalues;           
    }

 $newarray = array_combine($keys, $values); 
试试这个:

$newarray = array_combine(
    array_values(array_map(function ($v) { return $v['name'].'-and-a-string'; }, $myarray)),
    array_values(array_map(function ($v) { return 'some-other-text-'.$v['address']; }, $myarray))
);
试试这个:

$newarray = array_combine(
    array_values(array_map(function ($v) { return $v['name'].'-and-a-string'; }, $myarray)),
    array_values(array_map(function ($v) { return 'some-other-text-'.$v['address']; }, $myarray))
);
试试这个:

$newarray = array_combine(
    array_values(array_map(function ($v) { return $v['name'].'-and-a-string'; }, $myarray)),
    array_values(array_map(function ($v) { return 'some-other-text-'.$v['address']; }, $myarray))
);
试试这个:

$newarray = array_combine(
    array_values(array_map(function ($v) { return $v['name'].'-and-a-string'; }, $myarray)),
    array_values(array_map(function ($v) { return 'some-other-text-'.$v['address']; }, $myarray))
);

谢谢,这正是我需要的。真不敢相信我错过了。谢谢,这正是我需要的。真不敢相信我错过了。谢谢,这正是我需要的。真不敢相信我错过了。谢谢,这正是我需要的。真不敢相信我错过了。