不能切阵列 - 我需要一分为二的数组

我有一个看起来像下面这样的数组。 我想它切成两半,创建了两半两个新的阵列。 不过,如果我使用array_slice,它总是返回null。我不明白为什么。

array 'pic' => array 0 => string '740' (length=3) 1 => string '741' (length=3) 2 => string '742' (length=3) 3 => string '748' (length=3) 'alt' => array 0 => string '' (length=0) 1 => string '' (length=0) 2 => string 'Test caption 1' (length=14) 3 => string 'Test caption 2' (length=14)

我需要应保留键的阵列,只是切片的一半,所以我有两个半免费。 例如今年上半年应该是这样的:

array 'pic' => array 0 => string '740' (length=3) 1 => string '741' (length=3) 'alt' => array 0 => string '' (length=0) 1 => string '' (length=0)

而下半场:

array 'pic' => array 0 => string '742' (length=3) 1 => string '748' (length=3) 'alt' => array 0 => string 'Test caption 1' (length=14) 1 => string 'Test caption 2' (length=14)

谢谢

PS - 迈克,这是我用什么来使数组,实际上它是从其他阵列自行建造:

$lodgepics = get_field('accommodation_rooms'); $featuredpics = get_field('featured_pics'); $showcasepics = array(); foreach ($featuredpics as $featuredpic) { if (isset($featuredpic['featured_pic'])&&!empty($featuredpic['featured_pic'])) $showcasepics[pic][] = $featuredpic['featured_pic']; if (isset($featuredpic['featured_alt'])) $showcasepics[alt][] = $featuredpic['featured_alt']; else $showcasepics[alt][] = ''; } foreach ($lodgepics as $lodgepic) { if(isset($lodgepic['accommodation_roomphoto'])&&!empty($lodgepic['accommodation_roomphoto'])) $showcasepics[pic][] = $lodgepic['accommodation_roomphoto']; if(isset($lodgepic['accommodation_roomname'])&&!empty($lodgepic['accommodation_roomname'])) $showcasepics[alt][] = $lodgepic['accommodation_roomname']; else $showcasepics[alt][] = ''; }

--------------解决方案-------------

对我来说很难把握,需要做一些像你所建议的东西,如果是我,我不会使用你的结构填充数组,我会创造一个这样的数组:

array
0 =>
array
'pic' => string '740' (length=3)
'alt' => string '' (length=0)
1 =>
array
'pic' => string '741' (length=3)
'alt' => string '' (length=0)
2 =>
array
'pic' => string '742' (length=3)
'alt' => string 'Test Caption 1' (length=0)
3 =>
array
'pic' => string '748' (length=3)
'alt' => string 'Test Caption 2' (length=0)

该阵列结构保持图像属性在一起,而不是保持它们分开。

tomtheman5有80%存在,但留出的偏移,和长度PARAMS到需要被传递以获得正确的切片array_slice呼叫。 但是,他确实让好点,如果你坚持你的阵列结构,您可能会遇到的问题,如果你没有在每一个“图片”和“ALT”阵列匹配的元素。 如果这不是一个问题,然后再考虑下面的代码片段:

$slice1 = array();
$slice2 = array();

foreach ($array as $key => $value) {

$arrayCount = count($array[$key]);
$arrayHalfCount = ($arrayCount / 2);

$slice1[$key] = array_slice($array[$key], 0, $arrayHalfCount);
$slice2[$key] = array_slice($array[$key], $arrayHalfCount);
}

- 编辑 -

$lodgepics = get_field('accommodation_rooms');
$featuredpics = get_field('featured_pics');
$showcasepics = array();
foreach ($featuredpics as $featuredpic) {
if ((isset($featuredpic['featured_pic'])) && (!empty($featuredpic['featured_pic']))) {
$currentPic['pic'] = $featuredpic['featured_pic'];
$currentPic['alt'] = (isset($featuredpic['featured_alt'])) ? $featuredpic['featured_alt'] : '';
$showcasepics[] = $currentPic;
}
}

foreach ($lodgepics as $lodgepic) {
if ((isset($lodgepic['accommodation_roomphoto'])) && (!empty($lodgepic['accommodation_roomphoto']))) {
$currentPic['pic'] = $lodgepic['accommodation_roomphoto'];
$currentPic['alt'] = (isset($lodgepic['accommodation_roomname'])) ? $lodgepic['accommodation_roomname'] : '';
$showcasepics[] = $currentPic;
}
}

$showcasepicsCount = count($showcasepics);
$showcasepicsHalfCount = ($showcasepicsCount / 2);

$slice1 = array_slice($showcasepics, 0, $showcasepicsHalfCount);
$slice2 = array_slice($showcasepics, $showcasepicsHalfCount);

这实际上是数组的数组。 主阵列是一个关联数组,所以你会通过顺序该数组的所有键需要循环,让您的切片:

$slice1 = array();
$slice2 = array();
foreach ($array as $key => $value)
{
$slice1[$key] = array_slice($array[$key], ...);
$slice2[$key] = array_slice($array[$key], ...);
}

array_chunk - 斯普利特数组分成块

$array1 = array("1" => "green", "2" => "brown", "3" => "blue", "4" => "black");
$array2 = array("5" => "yellow","6" => "orange","7"=> "violet","8"=> "white");

$arraylength1 = ceil(count($array1)/2);
$res1 = array_chunk($array1,$arraylength1);
$arraylength2 = ceil(count($array2)/2);
$res2 = array_chunk($array2,$arraylength2);

echo "<pre>";
print_r($res1);
print_r($res2);
echo "</pre>";
exit;

尝试这个。

分类:php 时间:2012-01-01 人气:0
分享到:

相关文章

  • 数组多维数组 - 基于foo.bar.baz-点数组键名 2014-04-09

    我有"foo.bar.baz"作为数组中的键名的数组. 有没有一种方便的方法把这个数组多维数组(使用每一个"点的水平"作为下一个阵列键)? 实际输出:阵列([foo.bar.baz] => 1,[qux] => 1) 所需的输出:阵列([富] [巴] [巴兹] => 1,[qux] => 1) 代码示例: $arr = array("foo.bar.baz" => 1, "qux" => 1

  • 如何从一个多维数组的维(切片) 2014-05-11

    我试图找出如何从多维数组得到一个单一的维度(为了论证的缘故,让我们说这是2D),我有一个多维数组: double[,] d = new double[,] { { 1, 2, 3, 4, 5 }, { 5, 4, 3, 2, 1 } }; 如果这是一个交错数组,我会简单地调用d[0]并且会给我的数组{1, 2, 3, 4, 5}是有办法,我可以实现与二维数组一样吗? --------------解决方案------------- 不可以,你当然可以写一个包装类代表一个切片,并有一个索引内部 -

  • 分配给二维数组二维数组中的一个结构 2012-05-07

    我有过在结构二维数组试图循环功能: typedef struct node { int grid[3][3]; } Node; void someFunction(Node *node) { int grid[3][3] = node->grid; //loop through } 当我尝试编译这个,但是我得到一个 mp.c:42:错误:无效初始化 --------------解决方案------------- 您不能分配在C这只不过是不允许的数组. 当你写的: int grid[3][3] =

  • 使用PHP创建从简单的JSON数组多维数组 2012-08-22

    我有一个PHP查询返回从表中以下JSON格式. [{"memberid":"18", "useridFK":"30", "loginName":"Johnson", "name":"Frank", "age":"23", "place":"School", }, 它需要

  • 如何声明指针数组多维数组 2012-09-06

    // LED definitions for each step static uint8_t route1Step0LedsOn[] = { 0x30, 0xff }; static uint8_t route1Step0LedsOff[] = { 0x26, 0xff }; static uint8_t route1Step1LedsOn[] = { 0x18, 0x45, 0x21, 0xff }; static uint8_t route1Step2LedsOn[] = { 0x56,

  • 检查是否数组多维数组中存在 - 无循环 - 深度未知 2012-11-07

    我需要做快速查找找到,如果在一个数组中存在数组. 如果我知道该数组的深度这将是很容易 - 快! $heystack['lev1']['lev2']['lev3'] = 10; // $heystack stores 10,000s of arrays like this if(isset($heystack[$var1][$var2][$var3])) do something... 你将如何做到这一点,如果动态你不知道有多深? 循环和搜索在每个级别将是我的应用程序太慢. -----------

  • 遍历一维数组二维数组 2012-12-26

    我有, int[10] oneDim = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, index = 0; 如下所示,我们创建与原点的二维之一. 但我怎么遍历我oneDim内for (index = 0; index < 10; index++)这样我可以让我的列索引和行索引 存在 ,而无需创建一个新的? 我希望它看起来像这样在打印时其索引到一个二维数组(2×5): 0,0 0,1 1,0 1,1 2,0 2,1 3,0 3,1 4,0 4,1 我觉得这里的主要问题是让列索

  • 查找具有一定的价值数组多维数组WordPress的in_array 2012-12-29

    我运行一个WordPress网站使用WPML这是给我的努力我翻译的帖子这是在威尔士CY运行标记的查询问题负载. 所以,我试图做的是一个小黑客,让我查询所有帖子和使用wordpresses功能get_the_tags一个特定的标记找到后(); 我试图使用in_array这似乎不说WordPress的输出,这里的multidimesional阵列上的工作是在阵列从的print_r(); > Array ( > [629] => stdClass Object > ( > [ter

  • 删除所有子数组多维数组在PHP 2012-12-30

    什么是一个简单的模式,在PHP中,除去多维数组的所有子阵列? 我要的是删除所有的子阵列,但最上面的一个... 谢谢,影片名称 --------------解决方案------------- foreach($array as $k => $a) { if (is_array($a)) { unset($array[$k]); } } 喜欢这个? function FlattenCallback($Value) { return !is_array($Value); } $OneDimension

  • 我该如何计算有多少数组多维数组在PHP中具有相同的名称? 2013-01-01

    我有一个多维数组,我会在它有多个阵列. 在他们其中一些阵列包含多个阵列,以及,我想指望有多少阵列第二阵列(日期)之内. 这是多维阵列的结构的一个例子: $_SESSION['final_shipping'][04/03/2010][book] $_SESSION['final_shipping'][04/12/2010][magazine] $_SESSION['final_shipping'][04/12/2010][cd] 这是我目前使用的计算有多少第二阵列(带有日期)存在的foreach语

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.671 (s). 10 q(s)