【问题标题】:How to add extra letters coming out from serialized string in php?如何在php中添加来自序列化字符串的额外字母?
【发布时间】:2019-01-26 21:17:27
【问题描述】:

我正在处理 php 中的序列化字符串,我想在它未序列化时添加额外的字母。

序列化字符串的sn-ps为:

a: 7: {
    s: 3: "mon";a: 2: {
        s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
    }
    s: 3: "tue";a: 2: {
        s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
    }
    s: 3: "wed";a: 2: {
        s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
    }
    s: 3: "thu";a: 2: {
        s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
    }
    s: 3: "fri";a: 2: {
        s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
    }
    s: 3: "sat";a: 2: {
        s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
    }
    s: 3: "sun";a: 2: {
        s: 5: "start";s: 5: "09:00";s: 3: "end";s: 5: "21:00";
    }
}

为了使上述序列化字符串反序列化,我使用的 php 代码是:

<?php 
   $serialized = '';
   for ($i = 0; $i < count($data['item']->logistic_out); $i++) {
   if(strcmp($data['item']->logistic_out[$i]->logistics_type, "location_pickup") == 0)
   {
   $serialized .= strtolower($data['item']->logistic_out[$i]->logistics_times);
   }
   }
   if($serialized != '')
   {
   /*
   echo '<span class="font-weight-bold how-can-this-text">' . "how can this item be received" . '</span>';
   echo "<br>"; 
   echo "<br>"; 
   echo '<span class="font-weight-bold mb-3 ml-3">' . "pickup from item's location <br/>" . '</span>';
   echo "<br>";
   echo "<br>";  */
   $unserialized = unserialize( $serialized );

   foreach($unserialized as $key=>$value)
   {
   echo $key.":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;".$value['start']."&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;".$value['end']."<br/> <br/>";
   }
   }
   else
   {
       echo "<p style=\"font-style: italic;\">No information available</p>";
   }
   ?>


问题陈述:

上述代码中的echo语句正在生成以下o/p。我想知道我应该在上面的 echo 语句中进行哪些更改,以便 o/ps 具有星期一星期二星期三星期四星期五星期六星期日

【问题讨论】:

    标签: php string serialization


    【解决方案1】:

    您可以转换为时间戳,然后提取星期几的完整文本表示:

    echo date('l', strtotime($key));
    

    要将时间从 24 小时更改为 12 小时,请执行相同的操作:

    echo date('g', strtotime($value['end']));
    

    请参阅PHP - date 了解所有格式。

    【讨论】:

    • 你能给我指点我们怎么做吗?我在 php 上工作的不多。
    • 我也有类似的问题。我正在处理的当前代码以 24 小时格式显示时间。有没有我们可以用 12 小时格式的一天?在屏幕截图中,应该是 9,而不是 21。
    • 我需要在哪里添加这个echo date('g', strtotime($key));
    • 我认为.$value['end']. 采用的是 24 小时制。
    • 此时我正在使用这个echo date('l', strtotime($key)).":&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;".$value['start']."&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;".$value['end']."&lt;br/&gt; &lt;br/&gt;";
    【解决方案2】:

    更新了我的答案。请检查

    echo date('l', strtotime($key)).":&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;".$value['start']."&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;".$value['end']."<br/> <br/>";
    

    【讨论】:

    • 星期天终于不用双引号了吗?对不起,我没有在 php 上工作太多所以不确定。
    • 你想让我在哪里添加该数组?它似乎不起作用。
    • $serialized=""; 旁边对性能有好处。相应地编辑了代码
    • 编辑了我的答案。请通过更改该行来检查它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    相关资源
    最近更新 更多