3 回答

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
這是因?yàn)樵谒星闆r下$structure->parts[0]都不匹配$structure->parts[$i]->disposition == 'attachment'。
僅在正確時(shí)才在數(shù)組中創(chuàng)建新項(xiàng)目,并且不要使用循環(huán)計(jì)數(shù)器使用簡單$arr[]構(gòu)造來創(chuàng)建下一次出現(xiàn)
$attachments = array();
if(isset($structure->parts) && count($structure->parts)) {
foreach ($structure->parts as $part) {
if (($part->ifdisposition) && ($part->disposition == 'attachment')) {
foreach($part->parameters as $obj) {
if(strtolower($obj->attribute) == 'name') {
$t['is_attachment'] = true;
$t['name'] = $obj->value;
$t['attachment'] = '';
$attachments[] = $t
}
}
}
}
}

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您想知道為什么數(shù)組的索引以 1 開頭而不是 0,請向我們展示數(shù)組的定義。但是您也可以通過使用 PHP array_keys函數(shù)獲取數(shù)組鍵來使用 for 循環(huán)循環(huán)使用未知鍵的數(shù)組
$this->arr = [1 => 'one', 2 => 'two', 3 => 'three'];
$keys = array_keys($this->arr);
for($i = 0; $i < count($keys); $i++) {
$value = $this->arr[$keys[$i]];
echo 'val: ' .$value.'<br>';
}
或者你可以將兩個(gè) foreaches 包裝成另一個(gè)
foreach($structure->parts as $key => $part){
$part->ifdisposition = true;
$part->disposition = 'attachment';
if (($part->ifdisposition) && ($part->disposition == 'attachment')) {
foreach($part->parameters as $object) {
if(strtolower($object->attribute) == 'name') {
$attachments[$key]['is_attachment'] = true;
$attachments[$key]['name'] = $object->value;
$attachments[$key]['attachment'] = '';
}
}
}
}
另一種選擇是使用array_map重新映射數(shù)組的鍵,但您的數(shù)組將被更改,因此如果您需要原始數(shù)組,您可以將其緩存到另一個(gè)變量中。

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
這里:
$attachments[$i]['is_attachment'] = true;
$attachments[$i]['name'] = $object->value;
$attachments[$i]['attachment'] = '';
您將鍵設(shè)置為$i,因此$structure->parts匹配條件的第一個(gè)元素是循環(huán)中的第二個(gè)元素。要設(shè)置$attachments從零開始的數(shù)組,您只需要讓 PHP 自己創(chuàng)建鍵:
$attachments[] = ['is_attachment' => true, 'name' => $object->value, 'attachment' => ''];
- 3 回答
- 0 關(guān)注
- 248 瀏覽
添加回答
舉報(bào)