第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 PHP 中有一個(gè)引用自身的數(shù)組

在 PHP 中有一個(gè)引用自身的數(shù)組

PHP
慕的地6264312 2023-04-02 15:08:52
我想在 php 中實(shí)現(xiàn)這一點(diǎn)——但是否可能,如果可能,如何實(shí)現(xiàn)?一個(gè)包含兩個(gè)元素的數(shù)組,第一個(gè)是嵌套數(shù)組的數(shù)組(內(nèi)容和深度未知,你只知道每個(gè)數(shù)組都有一個(gè) id),第二個(gè)是對(duì)第一個(gè)元素中每個(gè)數(shù)組的引用的數(shù)組。是這樣的:$all = Array (  'nested_arrays' => Array(    'id0' => Array(      'id8' => Array(        ...      )...    )...  'references' => Array(    'id0' => (reference to Array id0),    'id8' => (reference to Array id8),    ...  ))然后你可以在不知道它在哪里的情況下訪問每個(gè)數(shù)組,比如$all['references']['id8']你甚至可以做unset($all['references']['id8'])...是的,或者你可以嗎?
查看完整描述

2 回答

?
翻過高山走不出你

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊

您可以通過將引用存儲(chǔ)在數(shù)組的引用中來完成第一個(gè),如下所示:


$all = [

    'nested_arrays' => [

        'id0' => [

            'id8' => [

                'hello'

            ],

            'id3' => [

                'id6' => 'apple'

            ]

        ]

    ],

];


$all['references']['id0'] = &$all['nested_arrays']['id0'];

$all['references']['id8'] = &$all['nested_arrays']['id0']['id8'];

$all['references']['id6'] = &$all['nested_arrays']['id0']['id3']['id6'];

然后檢查輸出:


echo '<pre>'. print_r($all['references']['id8'], true) . '</pre>';

echo '<pre>'. print_r($all['references']['id6'], true) . '</pre>';

輸出:


Array

(

    [0] => hello

)


apple

但是你不能對(duì)此使用 unset ,因?yàn)槟侵粫?huì)刪除數(shù)組的元素,而不是它指向的數(shù)組元素。


查看完整回答
反對(duì) 回復(fù) 2023-04-02
?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊

我寧愿創(chuàng)建一個(gè)實(shí)現(xiàn)迭代器接口的對(duì)象。對(duì)象本質(zhì)上是通過引用傳遞的。


$id0 = new MyIterator($array);

$all = [

  'nested_arrays' => [

    'id0' => $id0

  ],

  'references' => [

    'id0' => $id0

  ]

];

替代方法是遞歸迭代“nested_array”并填充“references”數(shù)組


foreach ($nested as $k => $v) {

  // Custom recursive iteration

  ...

  $all['references'][$k] = &$v;

}

通常,您不能通過取消設(shè)置引用來刪除原始值或?qū)ο蟆V挥挟?dāng)指向該值的所有指針都被取消設(shè)置時(shí),原始值才會(huì)被銷毀。您將不得不遍歷數(shù)組。


查看完整回答
反對(duì) 回復(fù) 2023-04-02
  • 2 回答
  • 0 關(guān)注
  • 180 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)