是否有PHP函数从另一个数组内部的数组获取值?

时间:2019-01-12 11:03:10

标签: php

到目前为止,我一直在使用函数array_values将这些值放在另一个变量中。但是,现在我在另一个数组中有了一个数组,所以我想知道是否可以仅通过使用函数(而不是使用foreach loop)来获取该数组的值?

以下是我正在谈论的代码示例:

public function returnArrayElements() {
  $array_one = ['positive' => [], 'negative' => []];
  $array_two = [1, -1, 2, -2, -3, -4, 5];
  foreach($array_two as $element) {
    if ($element > 0) {
      $array_one['positive'][] = $element;
    } else {
      $array_one['negative'][] = $element;    
    }  
  }

  return [
    'pos' => array_values(array_values($array_one['positive'])),
    'neg' => array_values(array_values($array_one['negative'])),
  ];
}

是否在array_values函数合法性内使用array_values函数?还是有更好的方法来做到这一点?

编辑:

如您所见,这是简化的代码,当然,在实际情况下,我当然不会像这样使用它。关键是$array_one更大,并且具有很多不同的元素,其中一个是另一个数组。数组作为参数传递给使用它们的函数(在我的问题中我还没有这样写,因为我认为现在这并不重要)。现在想象一下,在代码中的某个地方,我只需要来自数组的那些值就可以用作另一个数组中的元素,这就是为什么我需要函数仅返回那些元素而不是整个$array_one的原因,因为代码的一部分调用该函数的位置仅知道如何处理$array_two中的元素。

这是一个新的代码示例:

$array_one = [
[
  '1' => 'el1',
  '2' => 'el2',
  '3' => [
    '3.1' => 'el3.1',
    '3.2' => 'el3.2',
    '3.3' => 'el3.3',
   ],
   '4' => 'el4',
   '5' => 'el5',
], 
[
  '1' => 'el1',
  '2' => 'el2',
  '3' => [
    '3.1' => 'el3.1',
    '3.2' => 'el3.2',
    '3.3' => 'el3.3',
   ],
   '4' => 'el4',
   '5' => 'el5',    
]];

function one($array_one) {
  //knows how two work with whole $array_one
}
function two(array_values(array_values($array_one))) {
  //knows only how to work with el3.1, el3.2, el3.3
  //in this function is not implemented the code
  //which is going to get those three elements from $array_one
}

我在两个不同的数组中编写了相同的元素,但这只是因为我再也想不出其他东西了。在实际系统中,这些数组是不同的,只是array_key 3始终具有相同的名称(在实际系统中,它的名称不是3,而是property_data)。

编辑2:

Image of real code. 我需要property_data中的 3 个元素,它们都放在 ONE 变量(一个数组)中。不用foreach循环就可以做到吗?

1 个答案:

答案 0 :(得分:0)

您可以这样做:

// will print the first element of $array_two
echo $array_two[0];

> 1

或者您可以只使用print_r():

print_r($array_two);

> Array ( [0] => 1 [1] => -1 [2] => 2 [3] => -2 [4] => -3 [5] => -4 [6] => 5 )