如何使用foreach循环修改数组值?
How to modify array value using foreach loop?
我正在尝试使用 foreach 循环修改数组内的值,这里是数组内容
folders: [{id: "4", sysUser_id: "1", department_id: "0", foldername: "Auditors Files", parent_id: "0"},…]
0: {id: "4", sysUser_id: "1", department_id: "0", foldername: "Auditors Files", parent_id: "0"}
department_id: "0"
foldername: "Auditors Files"
id: "4"
parent_id: "0"
sysUser_id: "1"
1: {id: "3", sysUser_id: "1", department_id: "0", foldername: "Computer Components", parent_id: "0"}
department_id: "0"
foldername: "Computer Components"
id: "3"
parent_id: "0"
sysUser_id: "1"
2: {id: "2", sysUser_id: "1", department_id: "0", foldername: "Internal Auditors", parent_id: "0"}
department_id: "0"
foldername: "Internal Auditors"
id: "2"
parent_id: "0"
sysUser_id: "1"
3: {id: "1", sysUser_id: "1", department_id: "0", foldername: "IT Audit", parent_id: "0"}
department_id: "0"
foldername: "IT Audit"
id: "1"
parent_id: "0"
sysUser_id: "1"
我想做的是像这样修改所有 id 值
$reconstruct = array();
foreach($result['folders'] as $folder){
$reconstruct['id'][] = $this->my_encryption->urlEncrypt($folder->id);
$reconstruct['sysUser_id'][] = $this->my_encryption->urlEncrypt($folder->sysUser_id);
$reconstruct['department_id'][] = $this->my_encryption->urlEncrypt($folder->department_id);
$reconstruct['foldername'][] = $folder->foldername;
$reconstruct['parent_id'][] = $this->my_encryption->urlEncrypt($folder->parent_id);
}
$try['folders'] = $reconstruct;
echo json_encode($try);
但是输出变成这样
folders: {id: ["OElkUTBtK3FLZElwZm52ekhoSnZudz09OjpZBMuJMlf1iSHwxTeJncvP",…],…}
department_id: ["OE1Gb0xDK3BzNllzMjltVTVEZ3VwQT09OjoKbrlVvBKoPd5GiomYTreX",…]
0: "OE1Gb0xDK3BzNllzMjltVTVEZ3VwQT09OjoKbrlVvBKoPd5GiomYTreX"
1: "N3ZnK1V4MFZlckNFa0NzMytIREt1Zz09OjqzdSvYf1H6z21oWM_g2f8K"
2: "eUdkYmxHKzZkSmlsbEZXL2c0K250QT09OjoSE0DgI8sd2ho9JWDAsaSw"
3: "cXM5WlpqcjdjS0VncFNWOVJreUNrZz09OjrC-NAeGAPthrfrH-SG9sx8"
foldername: ["Auditors Files", "Computer Components", "Internal Auditors", "IT Audit"]
0: "Auditors Files"
1: "Computer Components"
2: "Internal Auditors"
3: "IT Audit"
id: ["OElkUTBtK3FLZElwZm52ekhoSnZudz09OjpZBMuJMlf1iSHwxTeJncvP",…]
0: "OElkUTBtK3FLZElwZm52ekhoSnZudz09OjpZBMuJMlf1iSHwxTeJncvP"
1: "Vlh4NVZmQlQxNjRSUWpsclc4SUtwZz09OjpwQRLcA_b90a8QT6mc4vxN"
2: "VGZwVlBrcmdEVUQzMzFMby9vdVQvdz09Ojrwdaqei86MQsuNRn-SOAYR"
3: "ZXlSUmNKRFMvWFFSRW90T240WEovUT09OjotEXan6A0ZO3lUBW0ae-N3"
parent_id: ["cXUvcWRtM0xKM2lSdXR3dTB2bkkvZz09Ojq7vtCUxphCBQya72IILSOO",…]
0: "cXUvcWRtM0xKM2lSdXR3dTB2bkkvZz09Ojq7vtCUxphCBQya72IILSOO"
1: "WFlvemlZcm1oT2ZTTy9sVUJLbzlyZz09OjpYmqeY8CWXnmn-l1sqMxHq"
2: "c2FHUmIrZ1J5OGpDT01hRFlxOVJVdz09OjpOa5sIP8BGWJpy9ZmA2ZUI"
3: "S1YyRHc1WWlMKzZMaTBQbUc0NmxkZz09OjqYj_cEXN1s75Vwimy9GZ6j"
sysUser_id: ["UjIxZ1hMR3dvd3BISVpnNjVkVk9tdz09OjrUK5qhxu0Mp4vvTN5YA4Eo",…]
0: "UjIxZ1hMR3dvd3BISVpnNjVkVk9tdz09OjrUK5qhxu0Mp4vvTN5YA4Eo"
1: "UGRwb0RYRUd5N3BrVTV0VDUrS0tkdz09OjpQo2CVXk28hUGGfrBVScq7"
2: "V3hXWGhoRWRyT01oQjdwV3hsUFVPZz09OjoxHbsRPJhSLQBEJKoBTAgB"
3: "cUd1UDRDR1VMZmh1d2tsU0FQaXlUQT09Ojq57rc7RIQMOaKN3NQfVGVa"
我只想更改数组值并保持相同的格式。我该怎么做?
要获得所需的数组结构,请在 for 循环中创建一个新数组,将键和值添加到其中,然后将新数组推送到 $reconstruct。我希望下面的代码有用 -
<?php
$reconstruct = [];
foreach ($result['folders'] as $folder) {
$updated_folder = [];
$updated_folder['id'] = $this->my_encryption->urlEncrypt($folder->id);
$updated_folder['sysUser_id'] = $this->my_encryption->urlEncrypt($folder->sysUser_id);
$updated_folder['department_id'] = $this->my_encryption->urlEncrypt($folder->department_id);
$updated_folder['foldername'] = $folder->foldername;
$updated_folder['parent_id'] = $this->my_encryption->urlEncrypt($folder->parent_id);
$reconstruct[] = $updated_folder;
}
echo json_encode($reconstruct);
您使用的语法 $ArrayName[index][] = value
是将一个值附加到名为 $ArrayName[index]
的数组的末尾。您想要的是为每个原始数组创建一个新数组,如下所示:
$reconstruct = array();
foreach($result['folders'] as $folder){
$newArray = [];
$newArray['id'] = $this->my_encryption->urlEncrypt($folder->id);
$newArray['sysUser_id'] = $this->my_encryption->urlEncrypt($folder->sysUser_id);
$newArray['department_id'] = $this->my_encryption->urlEncrypt($folder->department_id);
$newArray['foldername'] = $folder->foldername;
$newArray['parent_id'] = $this->my_encryption->urlEncrypt($folder->parent_id);
$reconstruct[] = $newArray;
}
我正在尝试使用 foreach 循环修改数组内的值,这里是数组内容
folders: [{id: "4", sysUser_id: "1", department_id: "0", foldername: "Auditors Files", parent_id: "0"},…]
0: {id: "4", sysUser_id: "1", department_id: "0", foldername: "Auditors Files", parent_id: "0"}
department_id: "0"
foldername: "Auditors Files"
id: "4"
parent_id: "0"
sysUser_id: "1"
1: {id: "3", sysUser_id: "1", department_id: "0", foldername: "Computer Components", parent_id: "0"}
department_id: "0"
foldername: "Computer Components"
id: "3"
parent_id: "0"
sysUser_id: "1"
2: {id: "2", sysUser_id: "1", department_id: "0", foldername: "Internal Auditors", parent_id: "0"}
department_id: "0"
foldername: "Internal Auditors"
id: "2"
parent_id: "0"
sysUser_id: "1"
3: {id: "1", sysUser_id: "1", department_id: "0", foldername: "IT Audit", parent_id: "0"}
department_id: "0"
foldername: "IT Audit"
id: "1"
parent_id: "0"
sysUser_id: "1"
我想做的是像这样修改所有 id 值
$reconstruct = array();
foreach($result['folders'] as $folder){
$reconstruct['id'][] = $this->my_encryption->urlEncrypt($folder->id);
$reconstruct['sysUser_id'][] = $this->my_encryption->urlEncrypt($folder->sysUser_id);
$reconstruct['department_id'][] = $this->my_encryption->urlEncrypt($folder->department_id);
$reconstruct['foldername'][] = $folder->foldername;
$reconstruct['parent_id'][] = $this->my_encryption->urlEncrypt($folder->parent_id);
}
$try['folders'] = $reconstruct;
echo json_encode($try);
但是输出变成这样
folders: {id: ["OElkUTBtK3FLZElwZm52ekhoSnZudz09OjpZBMuJMlf1iSHwxTeJncvP",…],…}
department_id: ["OE1Gb0xDK3BzNllzMjltVTVEZ3VwQT09OjoKbrlVvBKoPd5GiomYTreX",…]
0: "OE1Gb0xDK3BzNllzMjltVTVEZ3VwQT09OjoKbrlVvBKoPd5GiomYTreX"
1: "N3ZnK1V4MFZlckNFa0NzMytIREt1Zz09OjqzdSvYf1H6z21oWM_g2f8K"
2: "eUdkYmxHKzZkSmlsbEZXL2c0K250QT09OjoSE0DgI8sd2ho9JWDAsaSw"
3: "cXM5WlpqcjdjS0VncFNWOVJreUNrZz09OjrC-NAeGAPthrfrH-SG9sx8"
foldername: ["Auditors Files", "Computer Components", "Internal Auditors", "IT Audit"]
0: "Auditors Files"
1: "Computer Components"
2: "Internal Auditors"
3: "IT Audit"
id: ["OElkUTBtK3FLZElwZm52ekhoSnZudz09OjpZBMuJMlf1iSHwxTeJncvP",…]
0: "OElkUTBtK3FLZElwZm52ekhoSnZudz09OjpZBMuJMlf1iSHwxTeJncvP"
1: "Vlh4NVZmQlQxNjRSUWpsclc4SUtwZz09OjpwQRLcA_b90a8QT6mc4vxN"
2: "VGZwVlBrcmdEVUQzMzFMby9vdVQvdz09Ojrwdaqei86MQsuNRn-SOAYR"
3: "ZXlSUmNKRFMvWFFSRW90T240WEovUT09OjotEXan6A0ZO3lUBW0ae-N3"
parent_id: ["cXUvcWRtM0xKM2lSdXR3dTB2bkkvZz09Ojq7vtCUxphCBQya72IILSOO",…]
0: "cXUvcWRtM0xKM2lSdXR3dTB2bkkvZz09Ojq7vtCUxphCBQya72IILSOO"
1: "WFlvemlZcm1oT2ZTTy9sVUJLbzlyZz09OjpYmqeY8CWXnmn-l1sqMxHq"
2: "c2FHUmIrZ1J5OGpDT01hRFlxOVJVdz09OjpOa5sIP8BGWJpy9ZmA2ZUI"
3: "S1YyRHc1WWlMKzZMaTBQbUc0NmxkZz09OjqYj_cEXN1s75Vwimy9GZ6j"
sysUser_id: ["UjIxZ1hMR3dvd3BISVpnNjVkVk9tdz09OjrUK5qhxu0Mp4vvTN5YA4Eo",…]
0: "UjIxZ1hMR3dvd3BISVpnNjVkVk9tdz09OjrUK5qhxu0Mp4vvTN5YA4Eo"
1: "UGRwb0RYRUd5N3BrVTV0VDUrS0tkdz09OjpQo2CVXk28hUGGfrBVScq7"
2: "V3hXWGhoRWRyT01oQjdwV3hsUFVPZz09OjoxHbsRPJhSLQBEJKoBTAgB"
3: "cUd1UDRDR1VMZmh1d2tsU0FQaXlUQT09Ojq57rc7RIQMOaKN3NQfVGVa"
我只想更改数组值并保持相同的格式。我该怎么做?
要获得所需的数组结构,请在 for 循环中创建一个新数组,将键和值添加到其中,然后将新数组推送到 $reconstruct。我希望下面的代码有用 -
<?php
$reconstruct = [];
foreach ($result['folders'] as $folder) {
$updated_folder = [];
$updated_folder['id'] = $this->my_encryption->urlEncrypt($folder->id);
$updated_folder['sysUser_id'] = $this->my_encryption->urlEncrypt($folder->sysUser_id);
$updated_folder['department_id'] = $this->my_encryption->urlEncrypt($folder->department_id);
$updated_folder['foldername'] = $folder->foldername;
$updated_folder['parent_id'] = $this->my_encryption->urlEncrypt($folder->parent_id);
$reconstruct[] = $updated_folder;
}
echo json_encode($reconstruct);
您使用的语法 $ArrayName[index][] = value
是将一个值附加到名为 $ArrayName[index]
的数组的末尾。您想要的是为每个原始数组创建一个新数组,如下所示:
$reconstruct = array();
foreach($result['folders'] as $folder){
$newArray = [];
$newArray['id'] = $this->my_encryption->urlEncrypt($folder->id);
$newArray['sysUser_id'] = $this->my_encryption->urlEncrypt($folder->sysUser_id);
$newArray['department_id'] = $this->my_encryption->urlEncrypt($folder->department_id);
$newArray['foldername'] = $folder->foldername;
$newArray['parent_id'] = $this->my_encryption->urlEncrypt($folder->parent_id);
$reconstruct[] = $newArray;
}