我有一个看起来像这样的数组。
Array
(
[0] => Array
(
[0] => 1
[1] => 500
[2] => 800
)
[1] => Array
(
[0] => 1
[1] => 100
[2] => 200
)
[2] => Array
(
[0] => 1
[1] => 300
[2] => 400
)
)
我想使用foreach循环(不是函数)来做几件事。首先,我只想从子元素[2]中减去子元素[1]以生成子元素[3],然后将子元素3插回到输出数组中。见下文:
$output=
Array
(
[0] => Array
(
[0] => 1
[1] => 500
[2] => 800
[3] => 300
)
[1] => Array
(
[0] => 1
[1] => 100
[2] => 200
[3] => 100
)
[2] => Array
(
[0] => 1
[1] => 400
[2] => 250
[3] => 150
)
)
为了做到这一点,我使用下面的每个循环来生成子元素3的值,它可以正常工作。我的问题是将值插回到正确位置的输出数组中。我已经评论了我失败的最后一次尝试。对不起,如果我错过了这里明显的。
foreach($result as $sub)
{
//get values
$sub[3]=$sub[1]-$sub[2];
echo "<difference>".$sub[3]."<br>";//works ok
//insert values back into array
//$result[$sub[0]][3] = $sub[3];
}
print "<pre>";
print_r($result);
print "</pre>";
die();
答案 0 :(得分:5)
问题:
$result[$sub[0]][3] = $sub[3]; //= $result[1][3] = $sub[3]
$sub[0]
始终返回1(根据您的输入数组),因此它不是您正在寻找的内容。
解决方案:
在$array as $key => $val
循环中使用foreach
格式
然后根据相关密钥访问子数组。
foreach($result as $key => $sub)
{
//get values
$result[$key][3]=$sub[1]-$sub[2];
答案 1 :(得分:2)
你也可以使用array_map,它更优雅:
import pandas as pd
import pyodbc
# Connect to DB
server = 'server'
db = 'db'
conn = pyodbc.connect('DRIVER={SQL SERVER}; SERVER=' + server + '; DATABASE=' + db + '; TRUSTED_CONNECTION=yes')
cursor = conn.cursor()
table = 'table'
df = pd.read_sql('Select * From ' + table, conn)