我正在尝试创建一个函数,我从数组中的特定位置获取数据,然后将结果添加(加)。像这样:
$specificPositionsInArray = "1,4,12,27,40,42,48,49,52,53,56,58";
$dataArray = "1,2,3,4,5,6,7,8"; // More than hundred values.
myfunction($specificPositionsInArray) {
// Find position in array, based on $specificPositionsInArray and then
// plus the value with the previous value
// that is found in the $specificPositionsInArray.
// Something like:
$value = $value + $newValue;
return $value;
}
如果$specificPositionsInArray
是1,3,5
应返回的$value
为:9(1 + 3 + 5)(基于$dataArray
)。
也许有另一种方法可以做到,比如没有这个功能。
答案 0 :(得分:3)
这是一种功能性方法:
$specificPositionsInArray = array(1,3,7,6);
$dataArray = array(1,2,3,4,5,6,7,8);
function totalFromArrays($specificPositionsInArray, $dataArray) {
foreach ($specificPositionsInArray as $s){
$total += $dataArray[$s];
}
return $total;
}
$total = totalFromArrays($specificPositionsInArray, $dataArray);
echo $total;
答案 1 :(得分:0)
您应该查看数组以及如何处理它们,您可以很容易地找到解决方案。 http://www.php.net/manual/en/book.array.php
//$specificPositionsInArray = array(1,4,12,27,40,42,48,49,52,53,56,58);
$specificPositionsInArray = array(1,3,5);
$dataArray = array(1,2,3,4,5,6,7,8);
$total=0;
foreach($specificPositionsInArray as $k => $v){
$total += $dataArray[$v-1];
}
echo $total;
关于这个的奇怪部分是$v-1
但是由于你想要处理项目的添加方式,并且数组以元素0开始,你必须减去1才能得到正确的值。 / p>
答案 2 :(得分:0)
所以你想做这样的事情:
$dataArray = array(1,2,3,4,5...); // 100+ values, not necessarily all integers or in ascending order
$specificPositions = array(1, 3, 5);
function addSpecificPositions($data, $positions) {
$sum = 0;
foreach($positions as $p)
$sum += $data[$p];
return $sum;
}
如果你真的想把你的值列表保存在一个字符串中(就像你在你的例子中那样),你必须首先explode
以数组形式获取它们。
答案 3 :(得分:0)
由于您的数组看起来像是使用键的数值,因此这应该相当容易计算。我重新编写了一些代码,以便于阅读:
$specificPositionsInArray = array(1,4,6,7);
默认情况下,PHP会为数组中的每个值分配数字键,因此它对解释器来说就像这样。
array(
[0] => 1,
[1] => 4,
[2] => 6,
[3] => 7
)
除非您指定数字或混合键,否则对于所有数组都是相同的。由于数据数组似乎只是值,并且没有指定键,因此您只需使用与它们关联的键来定位它们。假设我使用你的数组示例:
$dataArray = array(1,2,3,4,5,6,7,8);
这对解析器来说是这样的:
array(
[0] => 1,
[1] => 2,
[2] => 3,
[3] => 4,
[4] => 5,
[5] => 6,
[6] => 7,
[7] => 8
)
如果要从此数组中选择数字6,实际上需要使用$dataArray[5]
,因为数组键从零开始。所以对于你的功能,你会这样做:
$specificPositionsInArray = array(1,4,6,7);
$dataArray = array(1,2,3,4,5,6,7,8);
calculate_array($specificPositionsInArray, $dataArray); // Returns 18
function calculate_array($keys, $data){
$final_value = 0; // Set final value to 0 to start
// Loop through values
foreach($keys as $key){
// Add the keys to our starting value
$final_value += $data[$key-1]; // minus 1 from key so that key position is human readable
}
// return the sum of the values
return $final_value;
}