在多维数组中保存元素

时间:2011-07-09 02:11:50

标签: php arrays multidimensional-array struct

我正在构建一个解析网站并存储链接和图像的程序,我将它们存储在单独的数组中,一个用于链接,一个用于图像等。我希望它保存在一个多维数组中.. 我该怎么做 ?我有三个函数返回一个ID数组,包含我正在存储的主题的ID,另一个函数返回我正在保存的主题的标题数组,另一个函数返回一个包含所有图像链接的数组..所以我的“主要”功能是:

$array_id = getIds();
$array_titles = getTitles($array_id);
$array_images = getImages($array_id);

我希望将它存储在某些内容中,当我打电话时:

  

$阵列[$ ID] [$图像]

我获得了此主题ID的所有图片,或者如果我致电

  

$阵列[$ ID] [$标题]

我获得了此主题ID的标题,这可能吗?或者这是最好的方法吗?我是php的新手,如果我使用的是C,我会制作一个结构,所以我不知道在php上是否有相同的东西,非常感谢..

2 个答案:

答案 0 :(得分:1)

不是函数返回所有标题和所有图像的数组,而是需要只返回与单个id相关的标题或图像的函数。我们不知道您是如何定义自己的职能的。

//Get all your ids
$array_id = getIds();

// Functions take an id and retrieve only its related objects
function getTitles($id) {}
function getImages($id) {}

//Iterate over the ids,  and retrieve the titles and images for each
foreach ($array_id as $id)
{
  // getTitles returns an array, keyed as 'titles' in the id array
  $id['titles'] = getTitles($id);

  // getImages returns an array, keyed as 'images' in the id array
  $id['images'] = getImages($id);
}

// Now you can retrieve them like so:
// A single title...
echo $array_id[0]['titles'][0];
// All titles
print_r($array_id[0]['titles'];

结果数组的结构类似于这个模型:

Array
(
    [0] => Array
        (
            [titles] => Array
                (
                    [0] => title 0a
                    [1] => title 0b
                    [2] => title 0c
                )    
            [images] => Array
                (
                    [0] => img0a.jpg
                    [1] => img0b.jpg
                )    
        )    
    [1] => Array
        (
            [titles] => Array
                (
                    [0] => title 1a
                    [1] => title 1b
                    [2] => title 1c
                )    
            [images] => Array
                (
                    [0] => img1a.jpg
                    [1] => img1b.jpg
                )    
        )    
    [2] => Array
        (
            [titles] => Array
                (
                    [0] => title 2a
                    [1] => title 2b
                    [2] => title 2c
                )    
            [images] => Array
                (
                    [0] => img2a.jpg
                    [1] => img2b.jpg
                )    
        )    
)

如果它对您有所帮助,请参阅我使用php -a交互式解释器创建数组模型的内容:

php > $ids = array();
php > $ids[0] = array('titles'=>array('title 1', 'title 2', 'title 3'), 'images'=>array('img1.jpg', 'img2.jpg'));
php > $ids[1] = array('titles'=>array('title 1a', 'title 1b', 'title 1c'), 'images'=>array('img1a.jpg', 'img1b.jpg'));
php > $ids[2] = array('titles'=>array('title 2a', 'title 2b', 'title 2c'), 'images'=>array('img2a.jpg', 'img2b.jpg'));
php > $ids[0] = array('titles'=>array('title 0a', 'title 0b', 'title 0c'), 'images'=>array('img0a.jpg', 'img0b.jpg'));
php > print_r($ids);

答案 1 :(得分:0)

您可能希望将PHP类视为一种替代方法,因为struct几乎是一个具有默认公共数据成员的类,它可能是这种形式的东西:

 class arrayInfo {
     public var id;
     public var title;
     public var image;
}

然后您可以在数组中使用它们:

$cur_array = array();
$cur_array[0] = new arrayInfo();
$cur_array[1] = new arrayInfo();

..类似的东西。希望有所帮助。