sách gpt4 ai đã đi

Khó hiểu về PHP: làm thế nào để chèn các mục vào một mảng liên kết?

In lại 作者:可可西里 更新时间:2023-11-01 00:51:40 33 4
mua khóa gpt4 Nike

是的,这是一个有点棘手的问题; 一个数组(没有副本),而不是任何奇数数组。让我解释一下,让我们从这里开始;

$a = array ( 'one' => 1, 'two' => 2, 'three' => 3, 'four' => 4, 'five' => 5, 'six' => 6 ) ;

假设这个数组很长,一百多条。我一步一步地遍历它,但在某个时候(让我们假设这发生在第二项)发生了一些事情。也许数据很时髦。尽管如此,我们还是需要向其中添加一些项目以供以后处理,然后不断循环遍历它,而不会丢失当前位置。基本上,我想做这样的事情;

echo current ( $a ) ; // 'two'
array_insert ( $a, 'four', 'new_item', 100 ) ;
echo current ( $a ) ; // 'two'

array_insert 的定义是 ( $array, $key_where_insert_happens, $new_key, $new_value ) ;当然 $new_key 和 $new_value 应该包装在数组包装器中,但这不是重点。以下是我希望在上述代码运行后看到的情况;

print_r ( $a ) ; // array ( 'one' => 1, 'two' => 2, 'three' => 3, 'four' => 4, 'new_item' => 100, 'five' => 5, 'six' => 6 ) ;
echo current ( $a ) ; // 'two'

无论何时使用 array_splice、array_slice、array_push 或大多数其他数组摆弄函数,基本上都是创建数组的副本,然后可以将其复制回来,但这会破坏对原始数组和位置的引用好吧,我上面的循环中断了。我可以使用直接引用(即 $a['new_item'] = 'whatever;)或将其放在末尾,但这些都不会将项目插入给定位置。

有人要吗?我怎样才能直接插入关联数组(正在其他地方处理)?到目前为止,我唯一的解决方案是;

  1. 记录位置(current())
  2. 进行拼接/插入(array_slice)
  3. 用新数组覆盖旧数组($old = $new)
  4. 搜索新位置(首先 reset() 然后循环找到它 [!!!!!!])

肯定有更好、更简单、更优雅的方法来处理目前笨拙、繁重且步履蹒跚的事情吗?为什么没有 array_set_position ( $key ) 函数可以快速帮助解决这个问题,或者没有直接在同一个数组(或两者)上工作的 array_insert?

1 Câu trả lời

也许我没有正确理解你,但你调查过array_splice()了吗? ?

cái nàyanswer您可能也会感兴趣。


这样的东西行得通吗?

function array_insert($input, $key, $value)
{
if (($key = array_search($key, array_keys($input))) !== false)
{
return array_splice($input, $key, 1, $value);
}

return $input;
}


这是我能想到的最好的:

$a = array
(
'one' => 1,
'two' => 2,
'three' => 3,
'four' => 4,
'five' => 5,
'six' => 6,
);

ph()->Dump(next($a)); // 2
array_insert($a, 'four', array('new_item' => 100));
ph()->Dump(current($a)); // 2

function array_insert(&$array, $key, $data)
{
$k = key($array);

if (array_key_exists($key, $array) === true)
{
$key = array_search($key, array_keys($array)) + 1;
$array = array_slice($array, null, $key, true) + $data + array_slice($array, $key, null, true);

while ($k != key($array))
{
next($array);
}
}
}

ph()->Dump($a);

/*
Array
(
[one] => 1
[two] => 2
[three] => 3
[four] => 4
[new_item] => 100
[five] => 5
[six] => 6
)
*/

我认为不可能设置数组内部指针 without looping .

关于php - 硬 PHP 螺母 : how to insert items into one associate array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5931757/

33 4 0
Bài viết được đề xuất: php - 无法使用 MAMP PRO 从 php 邮件功能发送邮件
Bài viết được đề xuất: java - 使数据库确定性地失败以进行测试
Bài viết được đề xuất: java - 多次构造 Eager ApplicationScoped 托管 beans
Bài viết được đề xuất: php - 在javascripts中嵌入php
可可西里
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com