为了账号安全,请及时绑定邮箱和手机立即绑定

请问在PHP中的任何位置上插入数组中的新项

请问在PHP中的任何位置上插入数组中的新项

PHP
偶然的你 2019-09-03 09:04:15
在PHP中的任何位置上插入数组中的新项如何将新项插入到任何位置的数组中,例如在数组的中间?
查看完整描述

3 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

你可能会发现这有点直观。它只需要调用一个函数array_splice:

$original = array( 'a', 'b', 'c', 'd', 'e' );$inserted = array( 'x' );
 // not necessarily an array, see manual quotearray_splice( $original, 3, 0, $inserted );
  // splice in at position 3// $original is now a b c x d e

如果替换只是一个元素,则不需要在其周围放置Array(),除非该元素是数组本身、对象或NULL。



查看完整回答
反对 回复 2019-09-04
?
FFIVE

TA贡献1797条经验 获得超6个赞

没有任何本地PHP函数(据我所知)能够完全满足您的要求。

我写了两种我认为适合的方法:

function insertBefore($input, $index, $element) {
    if (!array_key_exists($index, $input)) {
        throw new Exception("Index not found");
    }
    $tmpArray = array();
    $originalIndex = 0;
    foreach ($input as $key => $value) {
        if ($key === $index) {
            $tmpArray[] = $element;
            break;
        }
        $tmpArray[$key] = $value;
        $originalIndex++;
    }
    array_splice($input, 0, $originalIndex, $tmpArray);
    return $input;}function insertAfter($input, $index, $element) {
    if (!array_key_exists($index, $input)) {
        throw new Exception("Index not found");
    }
    $tmpArray = array();
    $originalIndex = 0;
    foreach ($input as $key => $value) {
        $tmpArray[$key] = $value;
        $originalIndex++;
        if ($key === $index) {
            $tmpArray[] = $element;
            break;
        }
    }
    array_splice($input, 0, $originalIndex, $tmpArray);
    return $input;}

虽然速度更快,而且内存效率可能更高,但这只适用于不需要维护数组键的情况。

如果您确实需要维护密钥,下面的内容将更合适;

function insertBefore($input, $index, $newKey, $element) {
    if (!array_key_exists($index, $input)) {
        throw new Exception("Index not found");
    }
    $tmpArray = array();
    foreach ($input as $key => $value) {
        if ($key === $index) {
            $tmpArray[$newKey] = $element;
        }
        $tmpArray[$key] = $value;
    }
    return $input;}function insertAfter($input, $index, $newKey, $element) {
    if (!array_key_exists($index, $input)) {
        throw new Exception("Index not found");
    }
    $tmpArray = array();
    foreach ($input as $key => $value) {
        $tmpArray[$key] = $value;
        if ($key === $index) {
            $tmpArray[$newKey] = $element;
        }
    }
    return $tmpArray;}



查看完整回答
反对 回复 2019-09-04
  • 3 回答
  • 0 关注
  • 449 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信