473,395 Members | 1,484 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,395 software developers and data experts.

Array Problem

I thought I understood how to traverse an array, but I guess I was wrong. I
have tried writing the code snippet below as: while, for, foreach... and get
the same (consistently wrong) result each time!

$data is a string variable containing lines of text. Each line is terminated
with a break (<br>). I need to analyze each line to ensure it does not exceed
$maxLength. If it is <= $maxLength do nothing, otherwise truncate the line at
$maxLength minus 3 and add ellipses (...). I then need to reassemble
everything back into a string variable, for later printing. Here is my code:

$line = explode('<br>', $data);
$count = count($line);
$i=1;
while ($i <= $count) {
$line = (strlen($line)>$maxLength) ? (substr($line,0,($maxLength-3)).'...')
: $line;
$i++;
}
$data = implode('<br>', $line);
echo $data;

I know I am forming the array correctly, because $line and $count display as
expected. I know that the ternary is correct, because it produces the desired
result using the original string (i.e., substituting $data outside the
'while' loop).

Any help will be greatly appreciated.
Jul 17 '05 #1
3 2346
jn

"<>" <lo******@44.255.255.255> wrote in message
news:9H********************@twister.socal.rr.com.. .
I thought I understood how to traverse an array, but I guess I was wrong. I have tried writing the code snippet below as: while, for, foreach... and get the same (consistently wrong) result each time!

$data is a string variable containing lines of text. Each line is terminated with a break (<br>). I need to analyze each line to ensure it does not exceed $maxLength. If it is <= $maxLength do nothing, otherwise truncate the line at $maxLength minus 3 and add ellipses (...). I then need to reassemble
everything back into a string variable, for later printing. Here is my code:
$line = explode('<br>', $data);
$count = count($line);
$i=1;
while ($i <= $count) {
$line = (strlen($line)>$maxLength) ? (substr($line,0,($maxLength-3)).'...') : $line;
$i++;
}
$data = implode('<br>', $line);
echo $data;

I know I am forming the array correctly, because $line and $count display as expected. I know that the ternary is correct, because it produces the desired result using the original string (i.e., substituting $data outside the
'while' loop).

Any help will be greatly appreciated.


You aren't using your counter for anything. You are trying to run this on
every element, not the whole array at once. You should do this:
$line[$i] = (strlen($line[$i])>$maxLength) ?
(substr($line[$i],0,($maxLength-3)).'...') : $line[$i];

HTH
Jul 17 '05 #2
[ not posted to alt.php ]

<> wrote:
$line = explode('<br>', $data); ### $line is an array $count = count($line);
$i=1;
while ($i <= $count) {
$line = (strlen($line)>$maxLength) ? (substr($line,0,($maxLength-3)).'...') : $line; ### ^^^^^^^^^^^^^ strlen( <array> ) ???? $i++;
}
$data = implode('<br>', $line);
echo $data;

I know I am forming the array correctly, because $line and $count display as
expected. I know that the ternary is correct, because it produces the desired
result using the original string (i.e., substituting $data outside the
'while' loop).


try:

<?php
$line = explode('<br>', $data);
foreach ($line as $currline) {
while (strlen($currline) > $maxLength) {
### As I don't want to change the array inside the loop,
### I'm creating another array for the results
$newline[] = (substr($currline, 0, ($maxLength - 3)) . '...');
$currline = substr($currline, ($maxLength - 3));
}
$newline[] = $currline;
}
$newdata = implode('<br/>', $newline);
echo $newdata;
?>
Happy Coding :)

--
..sig
Jul 17 '05 #3

"jn" <js******@cfl.rr.com> wrote in message
news:jP********************@twister.tampabay.rr.co m...
"<>" <lo******@44.255.255.255> wrote in message
news:9H********************@twister.socal.rr.com.. . <snip>
$data is a string variable containing lines of text. Each line is

terminated
with a break (<br>). I need to analyze each line to ensure it does not

exceed
$maxLength. If it is <= $maxLength do nothing, otherwise truncate the

line at
$maxLength minus 3 and add ellipses (...). I then need to reassemble
everything back into a string variable, for later printing. Here is my code:

$line = explode('<br>', $data);
$count = count($line);
$i=1;
while ($i <= $count) {
$line = (strlen($line)>$maxLength) ?

(substr($line,0,($maxLength-3)).'...')
: $line;
$i++;
}
$data = implode('<br>', $line);
echo $data;

<snip>
You aren't using your counter for anything. You are trying to run this on
every element, not the whole array at once. You should do this:
$line[$i] = (strlen($line[$i])>$maxLength) ?
(substr($line[$i],0,($maxLength-3)).'...') : $line[$i];


I could have sworn I already tried that! Oh well... thanks for your help.
I'll learn.

Now that this snippet is working, it has uncovered another problem. That is,
if a <pre> is part of $data, the ternary is ineffective on that substring. I
guess I can solve that with an if/else and substr. Do you think it is better
to do it inside or outside of the loop?
Jul 17 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

7
by: Federico G. Babelis | last post by:
Hi All: I have this line of code, but the syntax check in VB.NET 2003 and also in VB.NET 2005 Beta 2 shows as unknown: Dim local4 As Byte Fixed(local4 = AddressOf dest(offset)) ...
9
by: justanotherguy63 | last post by:
Hi, I am designing an application where to preserve the hierachy and for code substitability, I need to pass an array of derived class object in place of an array of base class object. Since I...
5
by: ritchie | last post by:
Hi, I am writing to ask if anyone can see why my array is not being sorted correctly? It's an array of 4 elements(ints 1,2,3,4) but after calling the selection sort it comes back sorted as...
8
by: Gerald | last post by:
I have a problem with an array of pointers. In a program I'm writing, I have to read a file, containing thousands of short lines. The content of another file will be compared against each line...
12
by: arkobose | last post by:
my earlier post titled: "How to input strings of any lengths into arrays of type: char *array ?" seems to have created a confusion. therefore i paraphrase my problem below. consider the...
204
by: Alexei A. Frounze | last post by:
Hi all, I have a question regarding the gcc behavior (gcc version 3.3.4). On the following test program it emits a warning: #include <stdio.h> int aInt2 = {0,1,2,4,9,16}; int aInt3 =...
8
by: intrepid_dw | last post by:
Hello, all. I've created a C# dll that contains, among other things, two functions dealing with byte arrays. The first is a function that returns a byte array, and the other is intended to...
104
by: Leszek | last post by:
Hi. Is it possible in javascript to operate on an array without knowing how mamy elements it has? What i want to do is sending an array to a script, and this script should add all values from...
23
by: sandy | last post by:
I need (okay, I want) to make a dynamic array of my class 'Directory', within my class Directory (Can you already smell disaster?) Each Directory can have subdirectories so I thought to put these...
4
by: assgar | last post by:
Hi Seasons Greetings Its back, I am being haunted. I thought I had resolved this problem but I am intermittently the receving the warnings below. This code consist of a 1) HTML form, 2)...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.