到目前为止,我一直在使用函数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循环就可以做到吗?
答案 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 )