在php foreach循环中获取数组中的下一个键

时间:2018-11-27 16:50:14

标签: php arrays

我有一个选择框,想要获取数组中下一个值的键以及选项,这是我的代码

<select>

<?php foreach ($make as $key => $make):?>
      <option value="<?php echo next($key);//not correct ?> - <?php echo $key; ?>"> <?php echo $make; ?></option>
<?php endforeach; 

这是数组

 Array
(
    [0] => Brand
    [1] => Alfa Romeo
    [123] => Alpina
    [142] => Aston Martin
    [152] => Audi
    [619] => Bentley
    [640] => BMW
    [1122] => Buick

)

4 个答案:

答案 0 :(得分:1)

这将与关联数组以及数字索引一起使用:

<?php foreach ($make as $key => $value):?>
    <?php next($make); ?>
    <option value="<?php echo key($make); ?> - <?php echo $key; ?>"> <?php echo $value; ?></option>
<?php endforeach; ?>

请注意,使用与数组相同的变量名进行迭代是令人困惑的,而且可能不是一个好主意。所以我在这里没有foreach ($make as $key => $make),而在这里foreach ($make as $key => $value)

上面的代码只是将指针移到数组上,然后使用key()获取您的选项值的键。由于最后一个数组元素上没有下一个键,因此该值将为空。

答案 1 :(得分:1)

您可以通过很多解决方案来解决问题,但是如果您有一个assoiatve数组或无序数组或没有numirc,则可以使用以下方法:

    CREATE TABLE IF NOT EXISTS `dinSchema`.`Personas` (
  `nombre` VARCHAR(20) NOT NULL,
  `apellidoP` VARCHAR(20) NOT NULL,
  `apellidoM` VARCHAR(20) NOT NULL,
  `foto` MEDIUMBLOB NULL,
  `fechaCaptura` TIMESTAMP(6) NOT NULL,
  `escolaridad` VARCHAR(25) NOT NULL,
  `carrera` VARCHAR(25) NULL,
  `telefono` VARCHAR(10) NULL,
  `correo` VARCHAR(50) NOT NULL,
  `sexo` VARCHAR(10) NOT NULL,
  `rfc` VARCHAR(13) NOT NULL,
  `curp` VARCHAR(18) NOT NULL,
  `observaciones` MEDIUMTEXT NULL,
  `idPersonas` INT NOT NULL,
  PRIMARY KEY (`idPersonas`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `dinSchema`.`direccion`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `dinSchema`.`direccion` ;

CREATE TABLE IF NOT EXISTS `dinSchema`.`direccion` (
  `pais` VARCHAR(6) NOT NULL DEFAULT 'México',
  `estado` VARCHAR(20) NOT NULL,
  `ciudad` VARCHAR(25) NOT NULL,
  `direccion` VARCHAR(150) NOT NULL,
  `cp` INT(8) NOT NULL,
  `idPersona` INT NOT NULL,
  INDEX `fk_PersonaDireccion_idx` (`idPersona` ASC) VISIBLE,
  CONSTRAINT `fk_PersonaDireccion`
    FOREIGN KEY (`idPersona`)
    REFERENCES `dinSchema`.`Personas` (`idPersonas`)
    ON DELETE RESTRICT
    ON UPDATE CASCADE)
ENGINE = InnoDB;

否则,如果数组是有序的并且是数字,则可以使用<?php $array = ["a" => 1, "b" => 2, "c" => 3, 1 => "aa"]; next($array); $key = key($array); echo $key; prev($array); $key = key($array); echo $key; ;

答案 2 :(得分:0)

<select>

<?php 
foreach ($make as $key => $make):
?>
      <option value="<?php echo $key + 1; ?> - <?php echo $key; ?>"> 
<?php echo $make; 
?>
</option>
<?php 
endforeach; 

只需将$key加1,如果键是有序的并且是数字,则将具有下一个数组元素。

答案 3 :(得分:0)

获取下一个元素的键的简单方法是例如使用数组的下一个元素的array_search。

<?php foreach ($makers as $key => $make):?>
  <option value="<?php echo array_search( next($makers), $makers );"> <?php echo $make; ?></option>
 <?php endforeach; 

希望这会有所帮助。