【问题标题】:Sort array data without duplicate排序数组数据不重复
【发布时间】:2016-05-12 02:34:59
【问题描述】:

我正在使用 Codebird 制作一个 twitter 机器人。

我想对 php 数组中的数据状态进行排序而不重复。逐行(urls媒体/远程文件链接)

这是我的代码:

require_once ('codebird.php');
\Codebird\Codebird::setConsumerKey("pubTRI3ik5hJqxxxxxxxxxx", "xxxxxS6Uj1t5GJPi6AUxxxxx");

$cb = \Codebird\Codebird::getInstance();

$cb->setToken("xxxxxxx-aVixxxxxxxxxX5MsEHEK", "Dol6RMhOYgxxxxxxFnDtJ6IzXMOLyt");

$statusimgs = array (
    "/images.com/hfskehfskea33/jshdfjsh.jpeg",
"/pic.images.com/SDjhs33/sZddszf.jpeg",
"/pic.images.com/dfggfd/dgfgfgdg.jpeg",
"//pic.images.com/xgxg/xdgxg6.jpeg",
);

$params = array(
  'status' => 'halo my ststus',
  'media[]' => $statusimgs[array_rand($statusimgs)]
);

$reply = $cb->statuses_updateWithMedia($params);

一开始我用的是随机数组,但这会造成重复的照片。

我想对链接远程文件从第一行到最后一行进行排序。我有 1-100 个链接图像要从远程文件方法上传到 Twitter。脚本手动或使用 cron 执行时一一对应。

我想每 60 秒设置一次 cron,60 秒 1 条照片推文。

【问题讨论】:

  • 你应该把你的问题集中在一个问题上。你的问题至少可以说有点令人困惑。

标签: php arrays twitter


【解决方案1】:

我将您的问题理解为“从数组中删除重复项并对其进行排序”。
所以,您可以试试这个:

  • 使 $statusarray 独一无二,
  • 排序$statusarray,
  • 将 $statusarray 添加到 $params 数组(key = 'media')。

代码

    <?php
        // Input array
        $statusimgs = array (
            "/images.com/hfskehfskea33/jshdfjsh.jpeg",
            "/pic.images.com/SDjhs33/sZddszf.jpeg",
            "/pic.images.com/dfggfd/dgfgfgdg.jpeg",
            "/pic.images.com/dfggfd/dgfgfgdg.jpeg",
            "/pic.images.com/xgxg/xdgxg6.jpeg",
            "/pic.images.com/xgxg/xdgxg6.jpeg",
            "/pic.images.com/xgxg/xdgxg6.jpeg",
        );

        // Make unique and sort
        $statusimgs = array_unique($statusimgs, SORT_STRING);
        sort($statusimgs,SORT_STRING);

        // Create the resulting $params array
        $params = array(
            'status' => 'halo my ststus',
            'media' => $statusimgs
        );

        // Display the result
        echo '<pre>'; var_dump($params); '</pre>';

        //$reply = $cb->statuses_updateWithMedia($params);
    ?>

结果

array(2) {
  ["status"]=>
  string(14) "halo my ststus"
  ["media"]=>
  array(4) {
    [0]=> string(39) "/images.com/hfskehfskea33/jshdfjsh.jpeg"
    [1]=> string(36) "/pic.images.com/SDjhs33/sZddszf.jpeg"
    [2]=> string(36) "/pic.images.com/dfggfd/dgfgfgdg.jpeg"
    [3]=> string(32) "/pic.images.com/xgxg/xdgxg6.jpeg"
  }
}

替代代码

<?php
$statusimgs = array (
    "/images.com/hfskehfskea33/jshdfjsh.jpeg",
    "/pic.images.com/SDjhs33/sZddszf.jpeg",
    "/pic.images.com/dfggfd/dgfgfgdg.jpeg",
    "/pic.images.com/dfggfd/dgfgfgdg.jpeg",
    "/pic.images.com/xgxg/xdgxg6.jpeg",
    "/pic.images.com/xgxg/xdgxg6.jpeg",
    "/pic.images.com/xgxg/xdgxg6.jpeg",
);

$statusimgs = array_unique($statusimgs, SORT_STRING);
sort($statusimgs,SORT_STRING);

session_start();
if (!isset($_SESSION['index'])) {
    $_SESSION['index'] = 1;
} else {
    $_SESSION['index'] = ($_SESSION['index']>=count($statusimgs)) ? 1 : $_SESSION['index']+1;
}
session_write_close();

$params = array(
    'status' => 'halo my ststus',
    'media' => $statusimgs
);

// echo '<pre>'; var_dump($params); '</pre>';
echo 'Choosen: ' . $params['media'][$_SESSION['index']-1] . '<br />';

//$reply = $cb->statuses_updateWithMedia($params);
?>

【讨论】:

  • 不工作..如何获取数组数据排序1,2,3,4,5,6,7,8...一个一个,当脚本首先执行时,获取数据[1] (数组的第一行),当脚本在第二个再次执行时,数组没有得到[1],而是得到[2],如果脚本exe再次第3个,不是得到[1],[2],而是得到[3], ,,, 等等。什么需要给缓存?
  • 我的脚本 总是根据给定的输入数组 $statusimgs 产生完全相同的结果(我将它添加到我的答案中)。我试图从您的问题中找出您在寻找什么。可能我听错了,也许你应该问的更准确更专注!你在说什么数组 1,2,,3,4..?
  • 如果您希望在会话中显示一张图片,您可以使用 session_start() 并将索引保​​存在 $_SESSION 变量中,每次递增并在必要时滚动。然后您可能只需要从输入数组中删除重复项 (array_unique(...))
  • 我刚刚添加了一个带有我上面提出的 $_SESSION 变量的替代方案。
  • 我只显示结果链接(以数组形式)上传到 twitter 上。排序不重复......但我有任何想法,在数组中创建指向 txt 文件的链接,并创建函数用于读取第一个txt 文件的行然后在文件执行后删除该行...
猜你喜欢
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 2013-11-01
  • 2016-03-02
相关资源
最近更新 更多